顺序表的实现[原创]
1
/*顺序表的实现*/
2
#include <malloc.h>
3
#include <stdio.h>
4
5
6
#define List_Init_Size 100
7
#define ListIncrement 10
8
9
typedef struct{ /*顺序表类型定义*/
10
char *elem;
11
int lenght;
12
int listsize;
13
}sqlist;
14
15
16
int compare(char a,char b){ /*比较函数*/
17
if(a==b) return 1;
18
return 0;
19
}
20
21
22
void print(sqlist l){ /*输出顺序表的元素到屏幕*/
23
int i=1;
24
while(i<l.lenght){
25
printf("%c ",l.elem[i-1]);
26
i++;
27
}
28
printf("\n");
29
}
30
31
32
int initlist_sq(sqlist *l){
33
l->elem=(char*)malloc(List_Init_Size*sizeof(char)); /*算法1------初始化一个l指向的顺序表*/
34
if(!l->elem) return 0;
35
l->lenght=0;
36
l->listsize=List_Init_Size;
37
return 1;
38
}
39
40
41
int listinsert_sq(sqlist *l,int i,char e){ /*算法2------在顺序表中第i个元素之前插入值为e的元素*/
42
char *q,*p,*newbase;
43
if(i<1 || i>l->lenght+1) return 0;
44
if(l->lenght>=l->listsize){
45
newbase=(char*)malloc((l->listsize+ListIncrement)*sizeof(char));
46
if(!newbase) return 0;
47
i=l;
48
while(i<=l->lenght){
49
newbase[i-1]=l->elem[i-1];
50
i++;
51
}
52
l->elem=newbase;
53
l->listsize+=ListIncrement;
54
}
55
q=&(l->elem[i-1]);
56
for(p=&(l->elem[l->lenght-1]);p>=q;--p)
57
*(p+1)=*p;
58
59
*q=e;
60
++l->lenght;
61
62
return 1;
63
}
64
65
66
int listdelete_sq(sqlist *l,int i,char *e){ /*算法3-------删除顺序表中第i个元素,并用e返回其值*/
67
char *p,*q;
68
if((i<1)||(i>l->lenght)) return 0;
69
p=&(l->elem[i-1]);
70
q=l->elem+l->lenght-1;
71
72
for(++p;p<=q;++p)
73
*(p-1)=*p;
74
--l->lenght;
75
76
return 1;
77
}
78
79
80
int locelem_sq(sqlist l,char e){ /*算法4--------确定顺序表l中元素值为e的元素位置*/
81
int i=1;
82
char *p; p=l.elem;
83
while(i<=l.lenght && !compare(*p++,e)) ++i;
84
if(i<=l.lenght) return i;
85
else return 0;
86
}
87
88
89
void mergelist_sq(sqlist la,sqlist lb,sqlist *lc){ /*算法5-------归并两个顺序表,得到一个值按非递减顺序排列的新表*/
90
char *pa,*pb,*pc,*pa_last,*pb_last;
91
pa=la.elem; pb=lb.elem;
92
lc->listsize=lc->lenght=la.lenght+lb.lenght;
93
94
pc=lc->elem=(char*)malloc(lc->listsize*sizeof(char));
95
if(!lc->elem) return 0;
96
97
pa_last=la.elem+la.lenght-1;
98
pb_last=lb.elem+lb.lenght-1;
99
100
while(pa<=pa_last && pb<=pb_last){
101
if(*pa<=*pb) *pc++=*pa++;
102
else *pc++=*pb++;
103
}
104
while(pa<=pa_last) *pc++=*pa++;
105
while(pb<=pb_last) *pc++=*pb++;
106
107
}
108
109
110
111
112
113
114
115
main(){
116
int j=1,x=97,i=0;
117
char elem='Q',del1,del2,*b,B;
118
sqlist *l,list_sq,*list_sq1,*list_sq2,list_sq3,*m;
119
120
l=&list_sq; m=&list_sq3; b=&B;
121
122
initlist_sq(l); /*------算法1*/
123
l->lenght=10;
124
for(j=1;j<=10;j++){
125
l->elem[j-1]=x++; /*初始化顺序表*/
126
}
127
128
printf("This sqlist's value:");
129
print(*l);
130
131
listinsert_sq(l,5,elem); /*------算法2,*/
132
133
printf("\n\nAfter --- listinsert_sq(l,5,elem)---\n");
134
print(*l);
135
136
listdelete_sq(l,6,b); /*------算法3*/
137
printf("\n\nAfter --- listdelete_sq(l,6,b) ---\n");
138
print(*l);
139
140
141
printf("\n\ng located at %d\n",locelem_sq(list_sq,'g')); /*------算法4*/
142
143
144
145
initlist_sq(list_sq1);
146
initlist_sq(list_sq2);
147
for(j=1,x=97;j<=6;j++,x+=2){
148
list_sq1->elem[j-1]=x;
149
}
150
list_sq1->lenght=6;
151
for(j=1,x=98;j<=6;j++,x+=2){
152
list_sq2->elem[j-1]=x;
153
}
154
list_sq2->lenght=6;
155
156
printf("\n\nlist_sq1's value:");
157
print(*list_sq1);
158
159
printf("list_sq2's value:");
160
print(*list_sq2);
161
162
163
mergelist_sq(*list_sq1,*list_sq2,m); /*------算法5*/
164
printf("\n\nmerged list_sq3:");
165
print(list_sq3);
166
167
168
getch();
169
}
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188

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

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188
