C语言数据结构之:顺序表的实现
来源:互联网 发布:网络外教口语 编辑:程序博客网 时间:2024/04/28 07:42
#include <stdio.h>#define INIT_MAX_SIZE 200#define INCREMENT_SIZE 100typedef struct SHUNXU{ int *data; int length; int listsize;}shunxu,*pshunxu;void initList(pshunxu elem){ (*elem).data=(int*)malloc(sizeof(int)*INIT_MAX_SIZE); if(!(*elem).data) { printf("malloc memory error"); return; } memset((*elem).data,1,INIT_MAX_SIZE); (*elem).listsize=INIT_MAX_SIZE; (*elem).length=0;}void List_insert(pshunxu elem,int i,int e){ int mid=i-1; if( i>(*elem).length+1 || i<1 ) { printf("error:out of range\n"); return; } if((*elem).length >= (*elem).listsize) { (*elem).data=(int*)realloc((*elem).data, ( (*elem).listsize+INCREMENT_SIZE)*sizeof(int) ); if(!(*elem).data) { printf("realloc memory error"); return; } (*elem).listsize+=INCREMENT_SIZE; } for(;mid<(*elem).length;mid++) { (*elem).data[mid+1]=(*elem).data[mid]; } (*elem).data[i-1]=e; (*elem).length++;}void Print_List(pshunxu elem){ int j=0; for(;j<elem->length;j++) { printf("%d ",elem->data[j]); }}void main(){ shunxu MyList; int j=0; initList(&MyList); for(j=0;j<200;j++) { List_insert(&MyList,j+1,j); } Print_List(&MyList);}