对于很多初学c语言的同学·,虽然都能理解数据结构中的思想,但是不一定能用c一行一行撸出一个完整的代码,我最近也正好在重新看数据结构,所以就把c语言实现数据结构源代码放出来帮助初学者。
复制代码
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#include <stdio.h> #include <stdlib.h> #define N 5 struct LNode { int data[N]; int last; }; typedef struct LNode *List; //给结构体取一个别名 struct LNode seqList; List makeEmpty(List PtrL) { //对顺序表做初始化或者置为空 PtrL = (List) malloc (sizeof(seqList)); PtrL->last = -1; return PtrL; } void Insert(List PtrL, int x, int i) { if(i < 0 || i > PtrL->last+1) { printf("插入位置不合法!"); return; //此处对插入的位置做判断,本实例中数组下标从开始。 } if(PtrL->last == N-1) { printf("表已满!"); return; //此处判断线性表是否已满 } for(int j = PtrL->last; j >= i; j--) //对表中元素做后移操作,给新插入元素腾个位置 PtrL->data[j+1] = PtrL->data[j]; PtrL->last++; PtrL->data[i] = x; } int dele(List PtrL, int i, int e) { if(i <= 0 || i >= PtrL->last+1) { printf("不存在%d个元素",i); return -1; //表示删除元素不存在 } e = PtrL->data[i-1]; for(int j = i; j <= PtrL->last; j++) { PtrL->data[j-1] = PtrL->data[j]; } PtrL->last--; return e; //e为了记录被删除元素的值 } int find(List PtrL, int e) { int i; for(i = 0; i <= PtrL->last && e != PtrL->data[i]; i++); if(i>= 0 && i <= PtrL->last) return i; else return -1; //表示查找元素不存在 } void print(List PtrL) { for(int i = 0; i <= PtrL->last; i++) printf("%d ",PtrL->data[i]); } int main() { List list; int a[100], n, m, k, l; list = makeEmpty(list); //初始化下 printf("请输入插入的个数及插入的元素:"); scanf("%d", &n); for(int i = 0; i < n; i++) { scanf("%d", &a[i]); Insert(list,a[i],i); //插入5个元素 } printf("插入元素后:"); print(list); printf("n"); printf("请输入要查找的元素值:"); scanf("%d", &m); printf("当前元素位于第%d位置。n",find(list,m)+1); printf("请输入要删除的元素的位置:"); scanf("%d", &k); l = dele(list,k,l); printf("删除后的顺序表为:"); print(list); printf("n"); printf("删除的元素值为:%d", l); return 0; }

最后
以上就是任性金针菇最近收集整理的关于c语言实现数据结构中顺序表的源代码的全部内容,更多相关c语言实现数据结构中顺序表内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复