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 }

 

你可能感兴趣的:(ArrayList)