1 #include <stdio.h>
2 #include <stdlib.h>
3 #include
"slist.h"
4
5 void showData(PSeqList list)
6 {
7 for (
int i =
0; i < list->n; i++
)
8 {
9 printf(
"第 %d 个元素是\t %d\n", i +
1, list->
element[i]);
10 }
11 }
12 ///删除最小一个元素并返回值
13 int removeMinAndRetuen(PSeqList list)
14 {
15 int tmpMin = list->element[
0], minIndex =
0;
16 int paddingValue = list->element[list->n -
1];
17 for (
int i =
0; i < list->n-
1; i++
)
18 {
19 if (list->element[minIndex] > list->
element[i ])
20 {
21 tmpMin = list->element[i +
1];
22 minIndex =
i;
23 }
24 }
25 list->element[minIndex] =
paddingValue;
26 return tmpMin;
27 }
28
29 int mainRemoveMinAndRetuen(
void)
30 {
31 PSeqList list =
createNullList_seq();
32 insert_seq(list,
0,
10);
33 insert_seq(list,
0,
50);
34 insert_seq(list,
0,
80);
35 insert_seq(list,
0,
6);
36 insert_seq(list,
0,
30);
37 insert_seq(list,
0,
20);
38 insert_seq(list,
0,
70);
39 insert_seq(list,
0,
100);
40 insert_seq(list,
0,
60);
41 insert_seq(list,
0,
70);
42 int minValue =
removeMinAndRetuen(list);
43 showData(list);
44
45 }
46
47 ///顺序表的反转
48 void reverse(PSeqList list)
49 {
50 int midIndex = list->n /
2;
51 int tmp =
0;
52 int length = list->
n;
53 for (
int i =
0; i < midIndex; i++
)
54 {
55 tmp = list->
element[i];
56 list->element[i] = list->element[length - i -
1];
57 list->element[length - i -
1] =
tmp;
58 }
59 }
60
61 int mainReverse(
void)
62 {
63 PSeqList list =
createNullList_seq();
64 insert_seq(list,
0,
10);
65 insert_seq(list,
0,
50);
66 insert_seq(list,
0,
80);
67 insert_seq(list,
0,
6);
68 insert_seq(list,
0,
30);
69 insert_seq(list,
0,
20);
70 insert_seq(list,
0,
70);
71 insert_seq(list,
0,
100);
72 insert_seq(list,
0,
60);
73 insert_seq(list,
0,
70);
74 insert_seq(list,
0,
1000);
75 reverse(list);
76 showData(list);
77
78
79
80 }
81 ///删除相同值
82 void removeIdentical(PSeqList list, DataType removeValue)
83 {
84 int total_i =
0;
85 for (
int i =
0; i < list->n; i++
)
86 {
87 if (list->element[i] !=
removeValue)
88 {
89 list->element[total_i] = list->
element[i];
90 total_i++
;
91 }
92
93 }
94 list->n =
total_i;
95 }
96
97 //删除s -- t 之间的值
98 void removeValue_s_t(PSeqList list,
int s,
int t)
99 {
100 int total_i =
0;
101 for (
int i =
0; i < list->n; i++
)
102 {
103 if (list->element[i] > s && list->element[i] <
t)
104 {
105 total_i++
;
106 }
107 else
108 {
109 list->element[i -total_i] = list->
element[i];
110 }
111
112 }
113 list->n -=
total_i;
114 }
115
116 int mainRemoveIdentical(
void)
117 {
118 PSeqList list =
createNullList_seq();
119 insert_seq(list,
0,
10);
120 insert_seq(list,
0,
50);
121 insert_seq(list,
0,
80);
122 insert_seq(list,
0,
6);
123 insert_seq(list,
0,
30);
124 insert_seq(list,
0,
20);
125 insert_seq(list,
0,
70);
126 insert_seq(list,
0,
100);
127 insert_seq(list,
0,
60);
128 insert_seq(list,
0,
70);
129 insert_seq(list,
0,
1000);
130 removeIdentical(list,
70);
131 showData(list);
132 }
133 int mainRemoveValue_s_t(
void)
134 {
135 PSeqList list =
createNullList_seq();
136 insert_seq(list,
0,
10);
137 insert_seq(list,
0,
50);
138 insert_seq(list,
0,
80);
139 insert_seq(list,
0,
6);
140 insert_seq(list,
0,
30);
141 insert_seq(list,
0,
20);
142 insert_seq(list,
0,
70);
143 insert_seq(list,
0,
100);
144 insert_seq(list,
0,
60);
145 insert_seq(list,
0,
70);
146 insert_seq(list,
0,
1000);
147 removeValue_s_t(list,
0,
60);
148 showData(list);
149
150
151
152 }
头文件:
1 #ifndef SLIST_H
2 #define SLIST_H
3 /* 线性表的顺序表示:类型和界面定义*/
4
5 #define TRUE 1
6 #define FALSE 0
7 #define SPECIAL -1
8
9
10 #define MAXNUM 20
11
12
13 typedef
int DataType;
14
15 struct SeqList {
16 int n;
17 DataType element[MAXNUM];
18 };
19
20 typedef
struct SeqList SeqList, *
PSeqList;
21
22
23 PSeqList createNullList_seq(
void);
24
25
26 int isNullList_seq(PSeqList palist);
27
28
29 int insert_seq(PSeqList palist,
int p, DataType x);
30
31
32 int delete_seq(PSeqList palist,
int p);
33
34
35 int locate_seq(PSeqList palist, DataType x);
36
37 DataType retrieve_seq(PSeqList palist,
int p);
38
39 #endif
View Code
顺序表实现:
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #include
"slist.h"
5
6 PSeqList createNullList_seq(
void) {
7 PSeqList palist = (PSeqList)
malloc(
sizeof(
struct SeqList));
8 if (palist !=
NULL)
9 palist->n =
0;
10 else
11 printf(
"Out of space!\n");
12 return palist;
13 }
14
15
16 int insert_seq(PSeqList palist,
int p, DataType x) {
17 int q;
18 if (palist->n ==
MAXNUM) {
19 printf(
"Seq-list overflow!\n");
20 return FALSE;
21 }
22 if (p <
0 || p > palist->
n) {
23 printf(
"Index of seq-list is out of range! \n");
24 return FALSE;
25 }
26
27 for (q = palist->n -
1; q >= p; q--
)
28 palist->element[q +
1] = palist->
element[q];
29
30 palist->element[p] =
x;
31 palist->n++
;
32 return TRUE;
33 }
34
35
36 int delete_seq(PSeqList palist,
int p) {
37 int q;
38 if (p <
0 || p > palist->n -
1) {
39 printf(
"Index of seq-list is out of range!\n ");
40 return FALSE;
41 }
42
43 for (q = p; q < palist->n -
1; q++
)
44 palist->element[q] = palist->element[q +
1];
45
46 palist->n--
;
47 return TRUE;
48 }
49
50
51 int locate_seq(PSeqList palist, DataType x) {
52 int q;
53 for (q =
0; q<palist->n; q++
)
54 if (palist->element[q] == x)
return q;
55 return -
1;
56 }
57
58 DataType retrieve_seq(PSeqList palist,
int p) {
59 if (p >=
0 && p < palist->
n)
60 return palist->
element[p];
61
62 printf(
"Index of seq-list is out of range.\n ");
63 return SPECIAL;
64 }
65
66 int isNullList_seq(PSeqList palist) {
67 return palist->n ==
0;
68 }
View Code
转载于:https://www.cnblogs.com/LLWH134/p/8066356.html
相关资源:顺序表逆置