1 #define INCREASEMENT 10
2
3 //线性表
4 typedef struct
5 {
6 int* base;
7 int length;
8 int size;
9 } Mylist;
10
11 void initlist(Mylist& list, int size)
12 {
13 list.base = (int*)malloc(size * sizeof(int));
14 list.size = size;
15 list.length = 0;
16 }
17
18 int insert(Mylist& list, int e, int p)//e为插入的元素,p为位址
19 {
20 if (p<0 || p>list.length)
21 {
22 cout << "插入位置错误" << endl;
23 return -1;
24 }
25 if (list.length == list.size)
26 {
27 if (list.base == NULL)
28 return -1;
29 list.base = (int*)realloc(list.base, (INCREASEMENT + list.size) * sizeof(int));
30 list.size += INCREASEMENT;
31 }
32 for (int i = list.length - 1; i >= p; i--)
33 list.base[i + 1] = list.base[i];
34 list.base[p] = e;
35 list.length++;
36 }
37
38 void showlist(Mylist list)
39 {
40 for (int i = 0; i < list.length; i++)
41 cout << list.base[i] << endl;
42 }
43
44 int insertend(Mylist& l, int i)
45 {
46 if (l.length == l.size)
47 {
48 l.base = (int*)realloc(l.base, (INCREASEMENT + l.size) * sizeof(int));
49 l.size += INCREASEMENT;
50 }
51 l.base[l.length] = i;
52 l.length++;
53 return 1;
54 }
55
56 int deleteone(Mylist& list, int e)
57 {
58 if (list.base == NULL)return -1;
59 int i = 0;
60 while (list.base[i++] != e);
61 for (; i != list.length; i++)
62 list.base[i - 1] = list.base[i];
63 list.length--;
64 return 0;
65 }
66
67
68 void main()
69 {
70 Mylist list;
71 initlist(list,5);
72 insertend(list, 1);
73 insertend(list, 2);
74 insertend(list, 3);
75 insertend(list, 4);
76 insertend(list, 5);
77 insertend(list, 6);
78 insert(list, 11, 6);
79 deleteone(list, 1);
80 deleteone(list, 6);
81 showlist(list);
82 cout << list.length<<endl;
83 cout << list.size;
84 }
85