#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define List_init_size 50
#define Listincrement 5
struct SqList
{
int *elem;
int length;
int listsize;
}
InitSq(struct SqList *L)
{ int i,e;
L->elem=(int *)malloc(List_init_size*sizeof(int));
if(!L->elem)
printf("Overflow");
else
{
L->length=0;
L->listsize=List_init_size;
printf("Init ok/n");
}
}
creat(struct SqList *L,int e,int i)
{
int *p=&(L->elem[i]);
*p=e;
L->length++;
}
void ListInsert_Sq(struct SqList *L,int i)
{
int e;
struct SqList *newbase;
int *q, *p;
printf("Enter the inserted number e=");
scanf("%d",&e);
if(i<1)
printf("error");
else
if(i>=L->length)
{
L->elem[L->length]=e;
L->length++;
}
else
if(L->length>=L->listsize)
newbase=(int *)realloc(>elem,(L>listsize+Listincrement)*sizeof(int));
if(!newbase){
printf("Overflow");}
L->elem=newbase;
L->listsize+=Listincrement;
{ q=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=q;p--)
*(p+1)=*p;
*q=e;
L->length++;
}
}
void Listdelete(struct SqList *L)
{
int i,e;
int *p,*q;
printf("/nEnter the deleted locator i=");
scanf("%d",&i);
if((i<1)||(i>L->length))
printf("Wrong Locator");
else
{
p=&(L->elem[i-1]);
e=*p;
q=L->elem+L->length-1;
for(p++;p<=q;p++)
*(p-1)=*p;
L->length--;
printf("Output the delete number e=%d/n",e);
}
}
void print(struct SqList *L)
{
int i,*q;
printf("/nOutput the List/n");
for(i=0;i<L->length;i++)
{ q=&(L->elem[i]);
printf("%d ",*q);
}
}
main()
{
int e,i=0;
struct SqList L;
clrscr();
InitSq(&L);
printf("Please Enter numbers for the list and end by 0/nf");
do
{
scanf("%d",&e);
creat(&L,e,i);
i++;
}
while(e);
Listdelete(&L);
print(&L);
printf("/nplease enter the inserted location i=");
scanf("%d",&e);
ListInsert_Sq(&L,e);
print(&L);