#include <stdio.h>
 #include <stdlib.h>
 #define Listinitsize 10//表的空间大小为10
 typedef struct {
     int *elem;
     int length;//表的长度
     int listsize;
 }Sqlist;
 int InitList_Sq(Sqlist *L)
 {
     L->elem=(int *)malloc((Listinitsize) * sizeof(int));//申请动态空间
     if(! L->elem)
		 return(-1);
     L->length=0;//线性表为空表
     L->listsize=Listinitsize;
     return 1;
 }
 int ListInsert_Sq(Sqlist *L,int i,int e)//进行插入操作
 {
     int *p,*q,*base;
     if(i<1||i>L->length+1)return 0;
     if(L->length>=L->listsize){
         if(! base)return -1;
         L->elem=base;
	 }
     q=&(L->elem[i-1]);
     for(p=&(L->elem[L->length-1]);p>=q;--p) *(p+1)=*p;
     *q=e;
     ++L->length;
     return 1;
     }
 int ListDelete_Sq(Sqlist *L,int i)
 {                                   //进行删除操作
     int *p,*q;
     if((i<1)||(i>L->length))//判断要删除的元素是否存在
		 return (-1);
     p=&(L->elem[i-1]);
     q=L->elem+L->length-1;
     printf("被删除的元素是 %d \n",L->elem[i-1]);
     for(++p;p<=q;++p)
     *(p-1)=*p;
     --L->length;
     return 1;
     }
 int inputlist(Sqlist *L)
 {
     int i,*p;
 p=L->elem;
     printf("表的容量是\n");
     scanf("%d",&L->length);
     printf("\n");
     printf("表中元素是:");
     for(i=0;i<L->length;i++)
     scanf("%d",(p+i));
     return 1;   
	 
}
 int display(Sqlist *L)//输出线性表
 {   int i;
     for(i=0;i<L->length;i++)
     printf("%5d\n",*(L->elem++));
     
     return 1;    
    }
 int InitList_Sq(Sqlist *L);
 int display(Sqlist *L);
 int inputlist(Sqlist *L);
 int ListInsert_Sq(Sqlist *L,int i,int e);
 int ListDelete_Sq(Sqlist *L,int i);
 main()
 {
     int i,choice, x;
     Sqlist La;
     InitList_Sq(&La); 
   inputlist(&La);
   do{               //进行选择操作
     printf("1  插入\n");
     printf("2  删除\n");
     printf("3  退出\n");
     printf("请选择: ");
     scanf("%d",&choice);
     printf("\n");
     switch(choice){      //如果选择1,进行插入操作
       case 1:{
         printf("i,x=");//i为插入位置,x为要插入的元素
             scanf("%d,&d",&i,&x);//输入i,x的值
             ListInsert_Sq(&La, i, x);//插入x
             display(&La);}
             break;
       case 2:
           {              //如果选择2,进行删除操作
               printf("i=");
           scanf("%d",&i);
           ListDelete_Sq(&La,i);
           display(&La);
           }
           break;}
       }while
     getchar();
 }