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 }