主体部分
1 #include "03_head.h"
2 int main(int argc, const char *argv[])
3 {
4 Seq *list = creat_data();
5 int a = 0;
6 int b = 0;
7 int c = 0;
8 int d = 0;
9 int i=0;
10 for(i=0;;i++)
11 {
12 printf("添加数据_1\n");
13 printf("查询数据_2\n");
14 printf("修改数据_3\n");
15 printf("删除数据_4\n");
16 printf("遍历数据_5\n");
printf("输入数据查询下角标'6'\n");
17 printf("退出_0\n");
18 int select = 0;
19 printf("请输入>>>>>");
20 scanf("%d",&select);
21 switch(select)
22 {
23 case 1:
24 printf("请选择--1 数据or 2 下标---");
25 scanf("%d",&a);
26 switch(a)
27 {
28 case 1:
29 insert_data(list);
30 break;
31 case 2:
32 subscript_insertion(list);
33 break;
34 }
35 break;
36 case 2:
37 printf("请选择--1 数据or 2 下标---");
38 scanf("%d",&b);
39 switch(b)
40 {
41 case 1:
42 looup(list);
43 break;
44 case 2:
45 Loo_sub(list);
46 break;
47 }
48 break;
49 case 3:
50 printf("请选择--1 数据or 2 下标---");
51 scanf("%d",&c);
52 switch(c)
53 {
54 case 1:
55 modify_data(list);
56 break;
57 case 2:
58 mod_sub(list);
59 break;
60 }
61 break;
62 case 4:
63 printf("请选择--1 数据or 2 下标---");
64 scanf("%d",&d);
65 switch(d)
66 {
67 case 1:
68 delete_data(list);
69 break;
70 case 2:
71 delect_sub(list);
72 break;
73 }
74 break;
75 case 5:
76 Traverse_data(list);
77 break;
78 case 0:
79 goto Founce;
case 6:
seek(list);
break;
80 default:
81 printf("<<<<<<输入错误>>>>>\n");
82 break;
83 }
84 }
85 Founce:
86 return 0;
87 }
函数部分
88 #include "03_head.h"
89 Seq* creat_data()
90 {
91 Seq *list=(Seq*)malloc(sizeof(Seq));
92 memset(list,0,sizeof(Seq));
93 return list;
94 }
95 void insert_data(Seq *p)
96 {
97 if(p->index == N)
98 {
99 printf("--------顺序表已满--------\n");
100 printf("<<<<<<请先删除不需要的数据在存储>>>>>>>>\n");
101 return;
102 }
103
104 printf("<<<<<<<<<<<请输入>>>>>>>>>>>");
105 int a;
106 scanf("%d",&a);
107 p->data[p->index] = a;
108 p->index++;
109 printf("<<<<<<<<输入成功>>>>>>>>>>>\n");
110 for(int i=0;i<p->index;i++)
111 {
112 printf("%d ",p->data[i]);
113 }
114 putchar(10);
115
116 }
117 void looup(Seq *p)
118 {
119 if(0 == p->index)
120 {
121 printf("<<<<<还没有数据>>>>\n");
122 return;
123 }
124 printf("<<<<<<<<<<请输入>>>>>>");
125 int select;
126 scanf("%d",&select);
127 int i = 0;
128 for(i=0;i<p->index;i++)
129 {
130 if(select == p->data[i])
131 {
132 printf("<<<<<<<<该数据为%d>>>>>>\n",p->data[i]);
133 break;
134 }
135 if(i == p->index-1)
136 {
137 printf("<<<没有这个数据>>>\n");
138 }
139 }
140 }
141 void delete_data(Seq *p)
142 {
143 if(0 == p->index)
144 {
145 printf("<<<<<还没有数据>>>>\n");
146 return;
147 }
148 printf("<<<<<<<<<请输入>>>>>");
149 int select;
150 scanf("%d",&select);
151 int i = 0;
152 for(i=0;i<p->index;i++)
153 {
154 if(select == p->data[i])
155 {
156 for(int j=i;j<N;j++)
157 {
158 p->data[j]=p->data[j+1];
159 printf("<<<<<<<<<<<删除完成>>>>>>>>>>\n");
160 }
161 }
162 }
163 p->index--;
164
165 for(int i=0;i<p->index;i++)
166 {
167 printf("%d ",p->data[i]);
168 }
169 putchar(10);
170 }
171 void modify_data(Seq *p)
172 {
173 if(0 == p->index)
174 {
175 printf("<<<<<还没有数据>>>>\n");
176 return;
177 }
178 printf("<<<<请输入要修改哪一个数据>>");
179 int select1;
180 scanf("%d",&select1);
181 printf("<<<<<请输入修改后的数据>>");
182 int select2;
183 scanf("%d",&select2);
184 for(int i=0;i<p->index;i++)
185 {
186 if(select1 == p->data[i])
187 {
188 p->data[i] = select2;
189 printf("<<<<<修改完成>>>>>\n");
190 }
191 }
192 for(int i=0;i<p->index;i++)
193 {
194 printf("%d ",p->data[i]);
195 }
196 putchar(10);
197 }
198 //^^^^^^^^^^^^^^^按照数据修改文件^^^^^^^^^^^^^
199 //---------------按照下标修改数据-------------
200 void subscript_insertion(Seq *p)
201 {
202 printf("请输入需要插入的下标位置0---%d>>>>>>",p->index);
203 int select1;
204 scanf("%d",&select1);
205 if(select1 < 0 || select1 > p->index)
206 {
207 printf("输入的下标不合法\n");
208 return;
209 }
210 printf("请输入要添加的数据");
211 int select2;
212 scanf("%d",&select2);
213 if(0 == p->index)
214 {
215 printf("<<<<<还没有数据>>>>\n");
216 return;
217 }
218 p->index++;
219 int c;
220 for(int i=p->index;i>=select1;i--)
221 {
222 p->data[i]=p->data[i-1];
223 c=i;
224 }
225 p->data[c]=select2;
226 printf("插入成功\n");
227 for(int i=0;i<p->index;i++)
228 {
229 printf("%d ",p->data[i]);
230 }
231 putchar(10);
232 }
233 void delect_sub(Seq *p)
234 {
235 if(0 == p->index)
236 {
237 printf("<<<<<还没有数据>>>>\n");
238 return;
239 }
240 printf("请输入需要插入的下标位置0---%d>>>>>>",(p->index)-1);
241 int select1;
242 scanf("%d",&select1);
243 if(select1 < 0 || select1 > p->index)
244 {
245 printf("输入的下标不合法\n");
246 return;
247 }
248 for(int i=select1;i<p->index;i++)
249 {
250 p->data[i] = p->data[i+1];
251 printf("删除成功\n");
252 }
253 p->index--;
254 for(int i=0;i<p->index;i++)
255 {
256 printf("%d ",p->data[i]);
257 }
258 putchar(10);
259 }
260 void mod_sub(Seq *p)//修改
261 {
262 if(0 == p->index)
263 {
264 printf("<<<<<还没有数据>>>>\n");
265 return;
266 }
267 printf("<<<<请输入下标位置>>>>\n");
268 int select1;
269 scanf("%d",&select1);
270 printf("<<<<<请输入数据>>>>\n");
271 int select2;
272 scanf("%d",&select2);
273 p->data[select1]=select2;
274 for(int i=0;i<p->index;i++)
275 {
276 printf("%d ",p->data[i]);
277 }
278 putchar(10);
279
280 }
281 void Loo_sub(Seq *p)
282 {
283 printf("<<<<<请输入下标位置:0-----%d>>>>>",(p->index)-1);
284 int select;
285 scanf("%d",&select);
286 if(select > p->index || 0 == index)
287 {
288 printf("数据不存在");
289 return;
290 }
291 printf("该数据为%d\n",p->data[select]);
292 }
293 void Traverse_data(Seq *p)
294 {
295 if(0 == p->index)
296 {
297 printf("<<<<<还没有数据>>>>\n");
298 return;
299 }
300 printf("%d",p->index);
301 for(int j=0;j<p->index;j++)
302 {
303 for(int k=j+1;k<p->index;k++)
304 {
305 if(p->data[j] == p->data[k])
306 {
307 for(int n=k;n<p->index-1;n++)
308 {
309 p->data[n] = p->data[n+1];
310 }
311 k--;
312 p->index--;
313 }
314 }
315 }
316 printf("%d\n",p->index);
317 for(int i=0;i<p->index;i++)
318 {
319 printf("%d ",p->data[i]);
320 }
321 putchar(10);
322 }
333 void seek(Seq *p)
334 {
335 printf("请输入数据\n");
336 int select = 0;
337 scanf("%d",&select);
338 int i = 0;
339 for(i=0;i<p->index;i++)
340 {
341 if(p->data[i] == select)
342 {
343 printf("%d\n",i);
344 }
345 if(i == p->index-1)
346 {
347 printf("<<<没有这个数据>>>\n");
348 }
349 }
350
351 }
头文件部分
323 #ifndef __FUN_H__
324 #define __FUN_H__
325 #include <stdio.h>
326 #include <string.h>
327 #include <stdlib.h>
328 #define N 50
329 typedef int dataType;
330 typedef struct
331 {
332 dataType data[N];
333 int index;
334 }Seq;
336 Seq* creat_data();
338 void insert_data(Seq *p);
340 void Traverse_data(Seq *p);
341 void looup(Seq *p);
342 void delete_data(Seq *p);
343 void modify_data(Seq *p);
344 void subscript_insertion(Seq *p);
345 void delect_sub(Seq *p);
346 void Loo_sub(Seq *p);
347 void mod_sub(Seq *p);
348 void seek(Seq *p)
349 #endif
数据结构第一天
于 2023-12-01 18:19:02 首次发布