1 #include <stdio.h>
2 #include <stdlib.h>
3 #define MaxSize 100
4 /*
5
6
7 struct SqList sq;
8 struct SqList* p_sq = &sq;
9 p_sq->length = 0;
10
11 struct SqList sq;
12 struct SqList* p_sq = &sq;
13 p_sq = malloc(sizeof(struct SqList));
14 p_sq->length = 0;
15
16
17 第一段代码 p_sq 指向 sq,因此 p_sq->length 就是 sq.length;
18 第二段代码 p_sq 指向一个新分配的内存,p_sq->length 不是 sq.length,sq.length 没有被初始化或赋值。
19
20 */
21 typedef int Elemtype;
22 typedef struct SqList
23 {
24 Elemtype data[MaxSize];
25 int length; //顺序表的长度
26 };
27 void Init__List(struct SqList *sq);//初始化顺序表
28 int Length__List(struct SqList sq);//求顺序表的长度
29 Elemtype Get__List(struct SqList sq, int index);//获取第index个元素,index>0
30 int Locate__List(struct SqList sq, int value);//获取值为value的下标,下标>0
31 void Insert__List(struct SqList *sq, int index, int value);//插入第index位置,值为value,index>0
32 void Delete__List(struct SqList *sq, int index);//删除第index个位置的值,index>0
33 void ShowSqList(struct SqList sq);//展示顺序表
34 int main(void)
35 {
36
37 struct SqList sq;
38 Init__List(&sq);
39 printf("线性表的长度是%d\n", sq.length);
40 for (int i = 1; i <= 101; i++)
41 {
42 Insert__List(&sq, i, i * 1000);
43 }
44 ShowSqList(sq);
45 // printf("-------------------------\n");
46 // Delete__List(&sq,1);
47 // ShowSqList(sq);
48 // printf("-------------------------\n");
49 // Delete__List(&sq,10);
50 // ShowSqList(sq);
51
52 // printf("顺序表的长度是:%d\n",Length__List(sq));
53 // printf("-------------------------\n");
54 // for(int i=0;i<sq.length;i++){
55 // printf("第%d个元素是%d\n",i+1,sq.data[i]);
56 // }
57 system("pause");
58 return 0;
59 }
60
61 void Init__List(struct SqList *sq)
62 {
63 //sq = (struct SqList *)malloc(sizeof(struct SqList));
64 sq->length = 0;
65 }
66
67 //求顺序表的长度
68 int Length__List(struct SqList sq)
69 {
70
71 return sq.length;
72 }
73 /*
74 返回线性表L中的第i个元素的值或地址
75 */
76 Elemtype Get__List(struct SqList sq, int index)
77 {
78 if (index <= 0 || index > sq.length)
79 {
80 return -1; //-1表示不存在
81 }
82
83 return sq.data[index - 1];
84 }
85
86 int Locate__List(struct SqList sq, int value)
87 {
88 for (int i = 1; i <= sq.length; i++)
89 {
90 if (sq.data[i - 1] == value)
91 {
92 return i - 1;
93 }
94 }
95
96 return -1;
97 }
98 void Insert__List(struct SqList *sq, int index, int value)
99 {
100 if (index <= 0 || index > sq->length + 1)
101 {
102 printf("插入的位置错误\n");
103 return;
104 }
105
106 if (sq->length == MaxSize)
107 {
108 printf("空间已满\n");
109 return;
110 }
111 for (int i = sq->length - 1; i >= index - 1; i--)
112 {
113 sq->data[i + 1] = sq->data[i];
114 }
115 sq->data[index - 1] = value;
116 sq->length++;
117 }
118
119 void Delete__List(struct SqList *sq, int index)
120 {
121 if (index <= 0 || index > sq->length)
122 {
123 printf("删除的位置错误\n");
124 return;
125 }
126
127 for (int i = index - 1; i < sq->length; i++)
128 {
129 sq->data[i] = sq->data[i + 1];
130 }
131
132 sq->length--;
133 }
134
135 void ShowSqList(struct SqList sq)
136 {
137 for (int i = 0; i < sq.length; i++)
138 {
139 printf("%d\n", sq.data[i]);
140 }
141 }