数据结构c代码1:顺序表

下面是用c代码对顺序表的操作:

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define MAXSIZE 25 //顺序表最大长度 5 6 /*定义顺序表*/ 7 typedef struct 8 { 9 int data[MAXSIZE]; 10 int len; 11 }SeqList; 12 13 /*初始化顺序表*/ 14 15 void InitList(SeqList *L) 16 { 17 L->len = 0; 18 } 19 20 /*建立顺序表*/ 21 int CreatList(SeqList *L, int a[], int n) 22 { 23 if(n > MAXSIZE) 24 { 25 printf("空间不够,无法建立顺序表!"); 26 return 0; 27 } 28 29 for(int i=0; i<n; i++){ 30 L->data[i] = a[i]; 31 } 32 L->len = n; 33 return 1; 34 } 35 36 /*遍历操作*/ 37 void PrintList(SeqList *L) 38 { 39 for(int i=0;i<L->len;i++){ 40 printf("%d ",(L->data[i])); 41 } 42 } 43 44 /*判空操作*/ 45 int IsEmpty(SeqList *L) 46 { 47 if(L->len == 0){ 48 return 1; 49 } 50 else 51 return 0; 52 } 53 54 /*求顺序表长度*/ 55 int GetLength(SeqList *L) 56 { 57 return L->len; 58 } 59 60 /*按值查找*/ 61 int Locate(SeqList *L, int x) 62 { 63 int i ; 64 for( i=0;i<L->len;i++) 65 { 66 if(L->data[i] == x) 67 { 68 return (i+1); //找到该数,并将其下标返回 69 } 70 } 71 72 if(i == L->len){ 73 return 0; //代表没有找到 74 } 75 } 76 77 /*按位查找*/ 78 int Get(SeqList *L, int x, int *ptr) 79 { 80 //若查找成功,则通过指针参数ptr返回值 81 if(x < 1 || x > L->len) 82 { 83 printf("查找位置非法,查找错误!!\n"); 84 return 0; 85 } 86 else 87 { 88 *ptr = L->data[x]; 89 return 1; 90 } 91 } 92 93 /*插入操作*/ 94 int Insert(SeqList *L, int i, int x) 95 { 96 if(L->len > MAXSIZE) 97 { 98 printf("上溢错误!!"); 99 return 0 ; 100 } 101 102 if(i<1 || i>L->len) 103 { 104 printf("插入位置错误!!!"); 105 return 0; 106 } 107 108 for(int k=L->len;k>i;k--){ 109 L->data[k]=L->data[k-1]; 110 } 111 L->data[i] = x; 112 L->len++; 113 return 1; 114 115 } 116 /*删除操作*/ 117 int Delet(SeqList *L, int i, int *ptr) 118 { 119 if(L->len == 0) 120 { 121 printf("该顺序表为空!!"); 122 return 0; 123 } 124 if(i < 1 || i > L->len) 125 { 126 printf("删除位置错误!"); 127 return 0; 128 } 129 *ptr = L->data[i-1]; 130 for(int k=i;k<L->len;k++){ 131 L->data[k-1] = L->data[k]; 132 } 133 L->len--; 134 return 1; 135 } 136 137 /*修改操作*/ 138 int Modify(SeqList *L, int i, int x) 139 { 140 if(i < 1 || i > L->len) 141 { 142 printf("位置错误!"); 143 return 0; 144 } 145 L->data[i-1] = x; 146 return 1; 147 } 148 149 int main() 150 { 151 int x; 152 int a[5] = {5, 15, 25, 35, 45}; 153 SeqList list; 154 InitList(&list); //初始化顺序表 155 if(IsEmpty(&list)) 156 { 157 printf("初始化顺序表成功!\n"); 158 } 159 printf("给表赋值:5,15,25,35,45\n遍历并输出顺序表:\n"); 160 CreatList(&list, a, 5); //建立一个长度为5的顺序表 161 PrintList(&list); //遍历顺序表 162 163 printf("\n在第五位后插入一个500:\n"); 164 Insert(&list, 5, 500); 165 PrintList(&list); 166 167 if(Modify(&list, 3, 250) == 1) 168 { 169 printf("\n把第三位改成250\n"); 170 PrintList(&list); 171 } 172 173 if(Delet(&list, 6, &x)) 174 { 175 printf("\n把倒数第一位删除,删除的值是%d\n", x); 176 PrintList(&list); 177 } 178 179 system("pause"); 180 return 0; 181 } 182 183

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwxwgf.html