***************************************顺序表.h*************************************************
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define TRUE 1 #define FLASE 0 typedef int Elemtype; typedef int Status; /*接口定义 Status InitList_Sq(SqList &L,int size,int inc); void CreateList_Sq(SqList &L); void print_Sq(SqList &L); int Search_Sq(SqList L, Elemtype e); Status DestroyList_Sq(SqList &L); Status ClearList_Sq(SqList &L); Status ListEmpty_Sq(SqList L); int ListLength_Sq(SqList L); Status GetElem_Sq(SqList L, int i, Elemtype &e); Status PutElem_Sq(SqList &L, int i, Elemtype e); Status Append_Sq(SqList &L, Elemtype e); Status DeleteLast_Sq(SqList &L, Elemtype &e); */
************************************源代码.h*****************************************************
复制代码
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#include "顺序表.h" //定义顺序表类型 typedef struct { Elemtype *elem; int length; int listsize; int increment; }SqList; //初始化顺序表 Status InitList_Sq(SqList &L,int size,int inc) { L.elem = (Elemtype *)malloc(size * sizeof(Elemtype)); L.length = 0; L.listsize = size; L.increment = inc; return TRUE; } //创建顺序表 Status CreateList_Sq(SqList &L) { int i; printf("请输入你要创建的顺序表元素个数:n"); scanf_s("%d", &L.length); if (L.length >= L.listsize) { L.elem = (Elemtype *)realloc(L.elem, (L.listsize + L.increment) * sizeof(Elemtype)); } if (!L.elem) { return FLASE; } printf("请输入你要创建的顺序表:n"); for (i = 0; i<L.length; i++) { scanf_s("%d", &L.elem[i]); } } //遍历顺序表 void print_Sq(SqList &L) { int i; for (i = 0; i<L.length; i++) { printf("%4d", L.elem[i]); } } //查找元素的位置 int Search_Sq(SqList L, Elemtype e) { int i = 0; while (L.elem[i] != e&&i<L.length) { i++; } if (i>L.length) return -1; else return i + 1;//因为C语言是从下标为0开始的,当i=0时表示第一个元素 } //销毁顺序表 Status DestroyList_Sq(SqList &L) { if (L.elem == NULL) return -1; else free(L.elem); printf("n销毁成功n"); return TRUE; } //清空顺序表 Status ClearList_Sq(SqList &L) { if (L.elem == NULL) exit(0); int i; Elemtype *p_elem = L.elem; for (i = 0; i<L.length; i++) { *L.elem = NULL; L.elem++; } L.elem = p_elem; } //判断顺序表是否为空 Status ListEmpty_Sq(SqList L) { int i; Elemtype* p_elem = L.elem; for (i = 0; i<L.length; i++) { if (*L.elem != 0) { L.elem = p_elem; return FLASE; } L.elem++; } return TRUE; } //求顺序表的长度 int ListLength_Sq(SqList L) { return L.length; } //用e返回顺序表L中第i个元素的值 Status GetElem_Sq(SqList L, int i, Elemtype &e) { int j; Elemtype* p_elem = L.elem; if (i<1 || i>L.length) return FLASE; for (j = 1; j <= i; j++) L.elem++; e = *L.elem; L.elem = p_elem; return TRUE; } //将顺序表L中第i个元素赋值为e Status PutElem_Sq(SqList &L, int i, Elemtype e) { L.elem[i - 1] = e; return TRUE; } //在顺序表L表尾添加元素e Status Append_Sq(SqList &L, Elemtype e) { L.elem[L.length] = e; L.length++; L.listsize += L.increment; return TRUE; } //删除顺序表L表尾元素 Status DeleteLast_Sq(SqList &L, Elemtype &e) { e = L.elem[L.length - 1]; L.length--; return TRUE; }
********************************************主函数.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#include <stdio.h> #include <stdlib.h> #include "顺序表.h" #include "源代码.h" //--------------------主函数入口-------------------- int main(){ SqList L; int size, inc; int e; int a; int length; int i; int temp; int j=10; int ee; printf("n--------------------顺序表初始化------------------n"); printf("请输入顺序表的长度size以及扩容量:n"); scanf_s("%d %d", &size, &inc); InitList_Sq(L, size, inc); CreateList_Sq(L); printf("n--------------------判断是否为空------------------n"); if(ListEmpty_Sq(L)){ printf("该顺序表为空n"); } else printf("该顺序表不为空n"); printf("n--------------------遍历顺序表--------------------n"); printf("此时顺序表为:n"); print_Sq(L); printf("n--------------------查找元素----------------------n"); printf("n请输入要查找的元素:n"); scanf_s("%d",&e); a = Search_Sq(L, e); printf("%d为第%d位:n",e,a); printf("n--------------------输出长度----------------------n"); length = ListLength_Sq(L); printf("顺序表的长度为%dn",length); printf("n----------将顺序表L中第i个元素赋值为temp----------n"); printf("请输入第i个元素的i值和temp值:n"); scanf_s("%d %d",&i,&temp); PutElem_Sq(L, i, temp); printf("n此时顺序表为:n"); print_Sq(L); printf("n---------------在顺序表表尾添加元素---------------n"); Append_Sq(L, j); printf("n此时顺序表为:n"); print_Sq(L); printf("n---------------在顺序表表尾删除元素---------------n"); DeleteLast_Sq(L, ee); printf("n被删除的元素为%dn",ee); printf("此时顺序表为:n"); print_Sq(L); printf("n-------------------清空顺序表---------------------n"); ClearList_Sq(L); if(ListEmpty_Sq(L)){ printf("n清空成功n"); } printf("n------------------销毁顺序表----------------------n"); DestroyList_Sq(L); getchar(); getchar(); return 0; }
最后
以上就是霸气音响最近收集整理的关于C语言实现顺序表的基本操作的全部内容,更多相关C语言实现顺序表内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复