c语言顺序表的建立

#include<stdlib.h>
#include<stdio.h>
#define LIST_INIT_SIZE 10 /*存储空间初始分配量*/
#define LISTINCREMENT 10  /*存储空间分配增量*/

typedef struct
{
  int *elem;    /*首地址*/
  int length;   /*当前长度*/
  int listsize; /*存储容量*/
}sqlist;

void initlist(sqlist *v)
{/*顺序表的初始化算法*/
  v->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));
  if(!v->elem)
   {
    printf("申请空间失败!!!\n");
    exit(0);
   }
  else
  {
     v->length=0;
     v->listsize=LIST_INIT_SIZE;
  }
}

void setlist(sqlist* v)
{/*利用数组建立顺序表*/
  int y,i,j;
  sqlist new1;
  printf("连续输入数据{初存10},当输入0时停止!!!\n");
  scanf("%d",&y);
  while(y!=0)
   {
     v->elem[v->length]=y;
     v->length++;
    if(v->length>=v->listsize)
     {
      new1.elem=(int *)realloc(v->elem,(v->listsize+LISTINCREMENT)*sizeof(int));
      if(!new1.elem)
       {
        printf("存储空间分配失败!!!\n");
        exit(0);
       }
      else
      {
        v->elem=new1.elem;/*原地址只想新分配的地址*/
        v->listsize=v->listsize+LISTINCREMENT;
       
      }

     }
  
    scanf("%d",&y);
   }
}

void printlist(sqlist v)
{/*利用数组输出顺序表*/
 int i;
 printf("输出顺序表:\n");
 for(i =0;i<v.length;i++)
  {
    printf("%d",v.elem[i]);
    printf("\n");
  } 
}

int main()
{
 sqlist v;
 initlist(&v);
 setlist(&v);
 printlist(v);
 printf("\n");
 return 0;
}

你可能感兴趣的:(C++,c,算法,C#,D语言)