一直在复习数学,想着要在六月底之前把数学三门四本书都过一遍,最近看到了线性代数了,好多学了都忘记了,慢慢来吧!
前段时间看的线性表了,才看了一点点,关于顺序表大致实现了下,后面抽看看看数据结构了,数学得全力复习了。准备暑假开始系统复习专业课,加油吧!
顺序表代码如下,简单实现了下,正好抓住这个机会复习了结构体,指针等知识。main()函数里写的比较乱,主要在于其他子函数里的实现
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #define LIST_SIZE 100
5
6 typedef int ElemType;
7 ElemType location;
8
9 typedef struct
10 {
11 int elem[LIST_SIZE];
12 int length;
13 }SqList;
14 // 初始化顺序表
15 int InitList(SqList *L,int len)
16 {
17 L->length = len;
18 return 1;
19 }
20 // 输入顺序表中元素
21 int ScanList(SqList *L)
22 {
23 int i;
24 for(i = 0;i < L->length;i++)
25 {
26 scanf_s("%d",&L->elem[i]);
27 }
28 return 1;
29 }
30 // 遍历顺序表
31 void TraverseList(SqList *L)
32 {
33 int i;
34 for(i = 0;i < L->length;i++)
35 {
36 printf("%d ",L->elem[i]);
37 }
38 }
39 // 销毁顺序表
40 int DestoryList(SqList *L)
41 {
42 free(L->elem);
43 L->length = 0;
44 return 1;
45 }
46 // 清空顺序表
47 int ClearList(SqList *L)
48 {
49 L->length = 0;
50 return 1;
51 }
52 // 判断顺序表是否为空
53 int ListIsEmpty(SqList *L)
54 {
55 if(L->length == 0)
56 {
57 return 0;
58 }else
59 {
60 return 1;
61 }
62 }
63 // 按照下标查找顺序表中元素
64 int GetList(SqList *L, int i)
65 {
66 if(i < 0||i > L->length)
67 {
68 return 0;
69 }else
70 {
71 return 1;
72 }
73 }
74 // 查找元素的位置
75 int LocatList(SqList *L, ElemType e)
76 {
77 int i = 0;
78 for(i = 0;i < L->length;i++)
79 {
80 if(L->elem[i] == e)
81 {
82 location = i;
83 return 1;
84 }
85 }
86 return 0;
87 }
88 // 插入元素
89 int InsertList(SqList *L,int n)
90 {
91 int *p,*q;
92
93 if(L->length == 0)
94 {
95 L->elem[0] = n;
96 ++L->length;
97 }
98 q = &(L->elem[0]);
99 while ((*q <= n)&&(q <= &(L->elem[L->length - 1])))
100 {
101 ++q;
102 }
103 ++L->length;
104 for(p = &(L->elem[L->length -1]);p >= q;--p)
105 {
106 *(p + 1) = *p;
107 *p = n;
108 }
109
110 return 0;
111 }
112 // 删除元素
113 int DeleteList(SqList *L,int n)
114 {
115 int *p, *q;
116 q = &(L->elem[0]);
117 while ((*q < n)&&(q < &(L->elem[L->length - 1])))
118 {
119 ++q;
120 }
121 for(p = &(L->elem[L->length - 1]);p >= q;++q)
122 {
123 *q = *(q + 1);
124 }
125 --L->length;
126 return 0;
127 }
128
129 int main()
130 {
131 int i;
132 int lengthOfNew;
133 int search;
134 int insertNum;
135 int deleteNum;
136 SqList L;
137 printf("请输入顺序表长度:\n");
138 scanf_s("%d",&lengthOfNew);
139 if(InitList(&L,lengthOfNew))
140 {
141 printf("顺序表建立完成\n");
142 }
143 printf("输入顺序表中的元素:\n");
144 ScanList(&L);
145 printf("\n");
146 printf("顺序表中元素为:\n");
147 TraverseList(&L);
148 printf("\n");
149 printf("输入元素下标进行查找:\n");
150 scanf_s("%d",&i);
151 if(!GetList(&L,i))
152 {
153 printf("越界\n");
154 }else
155 {
156 printf("查找的元素为:%d\n",L.elem[i-1]);
157 }
158 printf("请输入需要查找的元素:\n");
159 scanf_s("%d",&search);
160 if(LocatList(&L,search))
161 {
162 printf("查找的元素位置为:%d\n",location + 1);
163 }else
164 {
165 printf("没有查找到该元素!\n");
166 }
167 printf("输入要插入的元素:\n");
168 scanf_s("%d",&insertNum);
169 InsertList(&L, insertNum);
170 TraverseList(&L);
171 printf("\n");
172 printf("输入要删除的元素:\n");
173 scanf_s("%d",&deleteNum);
174 DeleteList(&L, deleteNum);
175 TraverseList(&L);
176 printf("\n");
177 system("pause");
178 return 0;
179 }
时间: 2024-10-07 00:01:06