/*
编写一个程序,动态的创建一个顺序表。要求:顺序表初始长度为10,向顺序表中输入
15个整数,并打印出来:
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define MaxSize 10
typedef int Integer;
typedef struct
{
Integer *elem;
Integer length;
Integer listsize;
} Sqlist;
/**初始化顺序表**/
void initSqlist(Sqlist *L)
{
L->elem = (Integer *)malloc(MaxSize*sizeof(Integer));
if (!L->elem)
{
exit(0);
}
L->length = 0;
L->listsize = MaxSize;
}
void InsertElem(Sqlist *L,Integer i,Integer item)
{
Integer *base,*insertPtr,*p;
if(i<1||i>L->length+1)
{
exit(0);
}
if (L->length>=L->listsize)
{
base = (Integer *)realloc(L->elem,(L->listsize+10)*sizeof(Integer));
L->elem = base;
L->listsize = L->listsize+100;
}
insertPtr = &(L->elem[i-1]);
for (p = &(L->elem[L->length-1]);p>=insertPtr;p--)
{
*(p+1) = *p;
}
*insertPtr = item;
L->length++;
}
void main()
{
Sqlist l ;
int i;
initSqlist(&l);
for (i = 0;i<15;i++)
{
InsertElem(&l,i+1,i+1);
}
InsertElem(&l,5,5);
for (i = 0;i<l.length;i++)
{
printf("%d ",l.elem[i]);
}
}