C语言数据结构:顺序表就地逆置算法实现
下面是一个 C 语言的算法示例,实现对顺序表就地逆置的操作:
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SqList;
void reverse(SqList *L) {
int i, temp;
for (i = 0; i < L->length / 2; i++) {
temp = L->data[i];
L->data[i] = L->data[L->length - 1 - i];
L->data[L->length - 1 - i] = temp;
}
}
int main() {
SqList list;
int i, n;
printf("Enter the length of the list: ");
scanf("%d", &list.length);
printf("Enter the elements of the list:
");
for (i = 0; i < list.length; i++) {
scanf("%d", &list.data[i]);
}
printf("Original list: ");
for (i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
reverse(&list);
printf("\nReversed list: ");
for (i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
return 0;
}
在这个算法中,我们定义了一个顺序表结构'SqList',其中包含一个数组'data'用于存储数据元素,以及一个整数'length'表示顺序表的长度。
'reverse'函数接受一个顺序表指针作为参数,通过遍历前一半的元素,将第i个元素与倒数第i个元素交换位置,从而实现就地逆置操作。
在主函数中,首先根据用户输入初始化了一个顺序表对象'list',然后调用'reverse'函数对顺序表进行逆置操作,并输出逆置前后的顺序表元素。
请注意,这个算法假设顺序表的长度已经在输入时确定,并且顺序表中元素的数据类型为整数。你可以根据实际情况进行修改。
原文地址: https://www.cveoy.top/t/topic/E7z 著作权归作者所有。请勿转载和采集!