#include <stdio.h>
#define INIT_MAX_SIZE 200
#define INCREMENT_SIZE 100
typedef 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);
}
C语言数据结构之:顺序表的实现
最新推荐文章于 2023-07-26 21:47:37 发布