数据结构——线性表的顺序表示(2)

题目来源于王道2018数据结构考研复习指导线性表的综合练习

编译环境:VS2015

题目:设计一个高效的算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1)

具体实现如下:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define initSize 50
 4 
 5 typedef int ElementType;
 6 
 7 typedef struct {
 8     ElementType *data;//顺序表的元素
 9     int length;//表长
10     int maxSize;//最大容量
11 }SeqList;
12 
13 //初始化线性表
14 void InitList(SeqList &L) {
15     L.data = (ElementType*)malloc(sizeof(ElementType)*initSize);
16     L.length = 0;//置为空表
17     L.maxSize = initSize;
18 }
19 
20 //创建顺序表
21 void CreateList(SeqList &L, int n) {
22     L.length = n;
23     for (int i = 0;i < n;i++) {
24         scanf_s("%d", &(L.data[i]));    
25     }
26 }
27 
28 //元素逆置
29 void Reverse(SeqList &L) {
30     int temp;
31     for (int i = 0;i < L.length/2;i++) {
32         temp = L.data[i];
33         L.data[i] = L.data[L.length - i - 1];
34         L.data[L.length - i - 1] = temp;
35     }
36 }
37 
38 //显示
39 void ShowList(SeqList L) {
40     for (int i = 0;i < L.length;i++) {
41         printf_s("%3d",L.data[i]);
42     }
43 }
44 
45 int main() {
46     SeqList L;
47     int length;
48     InitList(L);
49     printf_s("输入表的长度:");
50     scanf_s("%d", &length);
51     printf_s("
输入初始值:");
52     CreateList(L, length);
53     Reverse(L);
54     printf_s("
逆置的顺序表的元素如下:");
55     ShowList(L);
56     printf_s("
");
57     system("pause");
58     return 0;
59 }

测试结果:

原文地址:https://www.cnblogs.com/abyss1114/p/7283300.html