1.顺序表的简单操作

发布时间 2023-12-11 22:27:11作者: ZZH的青青草原
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define MaxSize 50 
 4 typedef int ElemType;
 5 typedef struct {
 6     ElemType date[MaxSize];
 7     int length;
 8 }SqList;//定义顺序表的类型
 9 //初始化顺序表 
10 void InitList(SqList *&L) {
11     L = (SqList*)malloc(sizeof(SqList));
12     L->length = 0;
13 }
14 //判断顺序表是否为空 
15 bool ListEmpty(SqList *L) {
16     return (L->length == 0);
17 }
18 //将数组元素加入顺序表 
19 void CreateList(SqList *&L,ElemType arr[],int len) {
20     int i = 0;
21     L = (SqList*)malloc(sizeof(SqList));
22     while(i < len) {
23         L->date[i] = arr[i];
24         i++;
25     }
26     L->length = len;
27 }
28 //在指定位置插入元素 
29 void ListInsert(SqList *&L, int k, ElemType e) {
30     int i;
31     if(k < 1 || k > L->length+1 || L->length == MaxSize) {
32         printf("插入位置有误!\n");
33     } else {
34         k--;
35         for(i = L->length; i > k; i--) {
36             L->date[i] = L->date[i-1];
37         } 
38         L->date[k] = e;
39         L->length++;
40     }
41 }
42 //返回顺序表长度 
43 int ListLength(SqList *L) {
44     return (L->length);
45 }
46 //删除指定位置元素
47 void ListDelete(SqList *&L, int k) {
48     int i;
49     if(k < 1 || k > L->length) {
50         printf("输入位置有误!\n");
51     } else {
52         k--;
53         for(i = k; i < L->length ;i++) {
54             L->date[i] = L->date[i+1];
55         }
56         L->length--;
57     }
58 } 
59 //输出顺序表 
60 void DispList(SqList *L) {
61     for(int i = 0; i < L->length; i++) {
62         printf("%d ",L->date[i]);
63     }
64 }
65 //销毁顺序表 
66 void DeleteList(SqList *&L) {
67     free(L);
68 }
69 void m1(int *e) {
70     *e = 5;//传参引用 
71 }
72 int main() {
73     int arr[5] = {1,2,3,4,5};
74     int e = 0;
75     SqList *L;//创建顺序表类型的指针 
76     InitList(L);
77     printf("%d\n",ListEmpty(L));
78     CreateList(L,arr,5);
79     ListInsert(L,3,8);
80     ListDelete(L,3);
81     printf("%d\n",ListLength(L));
82     DispList(L);
83     DeleteList(L);
84     m1(&e);
85     printf("%d",e);
86     return 0;
87 }