C语言数据结构之:顺序表的实现

#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);
}
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值