你好

线性表的简单实现

 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   

 

posted @ 2020-10-03 22:59  S_nA_tCH!  阅读(100)  评论(0)    收藏  举报