arraylist(c语言_简单实现)

 1 /**
 2  *
 3  * ArrayList  c语言实现
 4  *
 5  *
 6  * */
 7 
 8 
 9 #include<stdlib.h>
10 #define MAX_SIZE 1000
11 
12 typedef char Element;
13 typedef struct squence{
14     Element *items;
15     int listlen;
16     int len;
17 } sq;
18 
19 //初始化表
20 void init(sq *l){
21     //分配内存空间
22     l->items= (Element *)malloc(MAX_SIZE * sizeof(Element));
23     if(!l->items) exit(0);
24     l->len=0;
25     l->listlen=MAX_SIZE;
26 }
27 
28 //插入元素(往指定位置i插入元素)
29 void insertElem(sq *l,int i,Element e){
30     Element *base,*insertPtr,*p;
31     if(i<1 || i>l->len+1){
32         exit(0);
33     }
34 
35     if(l->len>=l->listlen){
36         //扩展空间
37         base = (Element *)realloc(l->items,(l->listlen+10)*sizeof(Element));
38         l->items=base;
39         l->listlen=l->listlen+10;
40     }
41 
42     insertPtr=&(l->items[i-1]);
43     for(p=&(l->items[l->len-1]);p>=insertPtr;p--){
44             *(p+1)=*p;
45     }
46 
47     *insertPtr=e;
48     l->len++;
49 }
50 
51 //删除元素
52 void delElem(sq *l,int i){
53     Element *delElem,*q;
54     if(i<1 || i>l->len)exit(0);
55     delElem=&(l->items[i-1]);
56     q=l->items+l->len-1;
57     //往前推移
58     for(++delElem;delElem<=q;++delElem){
59         *(delElem-1)=*delElem;
60     }
61     l->len--;
62 }
原文地址:https://www.cnblogs.com/mozhuhao/p/4484383.html