第1章第1节练习题2 逆置顺序表

最后更新于:2022-04-01 19:50:10

## 问题描述 > 设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)。 ## 算法思想 > 扫描顺序表L的前半部分,并且同时与L的后半部分交换。 ## 算法描述 ~~~ int Reverse(SqList *L) { ElemType temp; for(int i=0;ilength/2;i++){ temp=L->data[i]; L->data[i]=L->data[L->length-i-1]; L->data[L->length-i-1]=temp; } return 0; } ~~~ 具体代码见附件 ## 附件 ~~~ #include #define MaxSize 100 typedef int ElemType; typedef struct{ ElemType data[MaxSize]; int length; }SqList; int Reverse(SqList *); void Print(SqList *); int main(int argc, char* argv[]) { SqList SL; SL.length=10; for(int i=0;ilength==0){ printf("illegal!\n"); return -1; } for(int i=0;ilength/2;i++){ temp=L->data[i]; L->data[i]=L->data[L->length-i-1]; L->data[L->length-i-1]=temp; } return 0; } void Print(SqList *L) { for(int i=0;ilength;i++){ printf("%d\t",L->data[i]); } printf("\n"); } ~~~
';