我是靠谱客的博主 优美酒窝,这篇文章主要介绍c语言 顺序表:结构体+数组,现在分享给大家,希望可以做个参考。

在ubuntu里编写的,因为ubuntu不能使用&当做取地址符,所以就没用,或者换成了*

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <stdlib.h> #include <stdio.h> #include <string.h> #define ListSize 100 //最大允许长度 //#define LISTINCREMENT 10 //线性表存储空间的分配增量 //typedef int ListData; struct SquList { int data[ListSize]; //线性表存储空间基址,一维数组 int length; //当前线性表长度 //int ListSize; //当前分配的线性表存储空间大小 }l; /* *函数名:initList() *参数: *功能:建立空到顺序表l *主要步骤:调用malloc()为顺序表分配一预定大小(ListData)的空间,并将其基址赋值给L.data;() *返回值:无 */ void initList()//初始化 { //构造一个空到顺序表l //l.data=(ListData *)malloc(ListSize*sizeof(ListData)); //if(l==NULL) //{ // return ;//表示异常退出 // } l.length=0;//空表到长度为0 } /* *函数名:find() *参数: *功能:找x在表中的位置,若查找成功,返回x的下标,否则-1 *返回值:x的下标或者-1 */ int find(int x)//查找 { int i=0; while(i<l.length&&l.data[i]!=x)//没到顺序表尾并且没有找到x {i++;} if(i<l.length) {printf("查找成功!n"); printf("下标为%dn",i); return i;} else {return -1;} } /* *函数名:insert () *参数:无 *功能:在顺序表l的第i个元素之前插入一个新元素x; *返回值: */ int insert () { int x,i,j=0; printf("请输入要插入的值:"); scanf("%d",&x); printf("请输入要插入的下标:"); scanf("%d",&i); //i的合法值为1<=i<=l.length+1,当i=l.length+1时,x插在表尾 if((i<0)||(i>l.length)||(l.length==ListSize)) //i值不合法或顺序表已满 { printf("插入失败!"); return 0;}//插入不成功 else { for(j=l.length;j>=i;j--) {l.data[j]=l.data[j-1];} //插入位置及之后到元素后移一个位置 l.data[i]=x;//插入x l.length++;//表长增加1 printf("插入成功!n"); return 1;//插入成功 } } /* *函数名:Delete() *参数:l(顺序表),要删除的元素x *功能:删除顺序表l中的第i个元素,并用x返回 *返回值:0或1 */ int Delete() { int j=0; int x; printf("请输入要删除的数:"); scanf("%d",&x); int i=find(x); if(i>=0) { l.length--; for(j=i;j<l.length;j++) {l.data[j]=l.data[j+1];} printf("删除成功!n"); return 1; }return 0; } /* *函数名:EmptyList() *参数:无 *功能:判断顺序表里是否为空 *返回值:0或1 */ int EmptyList() { if (l.length == 0) { return 1; } return 0; } /* *函数名:PrintList() *参数:无 *功能:打印出顺序表中的数据 *返回值:无 */ void PrintList() { int k=0; if (EmptyList(l)) { printf("表为空!n"); return; } for (k=0;k<l.length;k++) { printf("%-3d",l.data[k]); } printf("n"); } void main() { int i=0,c; //SquList L; initList();//初始化顺序表 printf("请选择你要输入数据的个数:"); scanf("%d",&l.length); for(i=0;i<l.length;i++) { printf("第%d数为:",i); scanf("%d",&l.data[i]); } //打印表中元素 printf("表中元素有:n"); PrintList(); insert(); PrintList(); printf("请输入要查找的值:"); scanf("%d",&c); find(c); PrintList(); Delete(); PrintList(); }

最后

以上就是优美酒窝最近收集整理的关于c语言 顺序表:结构体+数组的全部内容,更多相关c语言内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(118)

评论列表共有 0 条评论

立即
投稿
返回
顶部