C语言实现时间复杂度为O(1)的顺序表逆置
时间: 2024-04-23 07:28:25 浏览: 8
要实现时间复杂度为 O(1) 的顺序表逆置,可以使用一个辅助变量,交换表头和表尾元素的值。下面是一个示例的 C 代码实现:
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
void reverse(SeqList* list) {
if (list->length <= 1) {
return; // 表为空或只有一个元素,无需逆置
}
int temp = list->data[0];
list->data[0] = list->data[list->length - 1];
list->data[list->length - 1] = temp;
}
int main() {
SeqList list;
list.length = 5;
list.data[0] = 1;
list.data[1] = 2;
list.data[2] = 3;
list.data[3] = 4;
list.data[4] = 5;
reverse(&list);
printf("Reversed list: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
printf("\n");
return 0;
}
```
这段代码中,我们定义了一个 SeqList 结构体来表示顺序表,其中包含一个整型数组 `data` 和表的长度 `length`。`reverse` 函数用于逆置顺序表,它通过交换表头和表尾元素的值来实现逆置操作。在 `main` 函数中,我们创建了一个长度为 5 的顺序表,并调用 `reverse` 函数进行逆置,然后输出逆置后的顺序表。
这段代码的时间复杂度为 O(1),因为无论顺序表中有多少个元素,逆置操作都只需要进行一次交换即可。