-
题目:设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)。
- 此题较为简单,注意空间复杂度为O(1)
- 代码:
#include<stdio.h> #include<stdbool.h> #include<stdlib.h> #define InitSize 10 typedef struct { int* data; int length; int MaxSize; }SeqList; bool InitList(SeqList* L) { L->data = (int*)malloc(sizeof(int) * InitSize); if (L->data == NULL) return false; L->length = 0; L->MaxSize = InitSize; return true; } bool ReverseList(SeqList* L) { if (L->length == 0) { return false; } int i = 0; while (i < L->length / 2) { int temp = L->data[i]; L->data[i] = L->data[L->length - 1 - i]; L->data[L->length - 1 - i] = temp; i++; } return true; } int main() { SeqList L; InitList(&L); for (int i = 0; i < L.MaxSize; i++) { scanf("%d", &L.data[i]); L.length++; } if (ReverseList(&L)) for (int i = 0; i < L.length; i++) printf("%d ", L.data[i]); return 0; }
欢迎提问
王道数据结构----顺序表部分综合题----02(完整可执行代码)
于 2023-09-26 18:00:44 首次发布