#include<iostream.h>
#include<stdlib.h>
#include<malloc.h>
#define M 100
#define N 10
int *q,*p;
typedef struct {
int * elem;
int length;
int Listsize;
}Sqlist;
int Initlist_sq(Sqlist & L){
//初始化顺序表L
L.elem=(int*)malloc(M*sizeof(int));
if(!L.elem) exit(0);
L.length=0;
L.Listsize=M;
return 1;
}
int ListInsert_sq(Sqlist & L,int i,int & e){
//在顺序表L第i个位置之前插入新的元素e
if(i<1||i>L.length+1)return 0;
int * newbase;
if(L.length>=L.Listsize){
newbase =(int*) realloc (L.elem,(L.Listsize+N)*sizeof(int));
if(!newbase)exit(0);
L.elem=newbase;
L.Listsize+=N;
}
q=& L.elem[i-1];
for(p=& (L.elem[L.length-1]);p>=q;p--)*(p+1)=*p;
*q=e;
L.length++;
return 0;
}
int ListDelete_sq(Sqlist & L,int i,int & e){
//在顺序表L中删除第i个元素,并用f返回其值
if((i<1)||(i>L.length))return 0;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return 0;
}
int ListDisplay_sq(Sqlist & L)
{
if(L.length == 0)
{
cout<<"空表!!"<<endl;
return 0;
}
//cout<<"表里的内容:"<<endl;
for(int j=0;j<L.length;j++)
{
cout<<L.elem[j]<<" ";
}
cout<<endl;
}
void main(){
Sqlist L;
Initlist_sq(L);
int e;
cout<<"请输入十个数:"<<endl;
for(int i=1;i<=10;i++){
cin>>e;
ListInsert_sq(L,i, e);
}
cout<<"该表为:"<<endl;
ListDisplay_sq(L);
cout<<"/n/n";
int a;
cout<<"请你选择要进行的操作: 1 插入 2 删除 3 退出 /n/n";
cin>>a;
switch(a)
{
case 1:
cout<<"要插入的位置 i:"; cin>>i;
cout<<"/n要插入的数 e:"; cin>>e;
ListInsert_sq(L,i, e);
cout<<"插入后的表为:/n";
ListDisplay_sq(L);
cout<<endl;break;
case 2:
cout<<"要删除的位置 i:"; cin>>i;
ListDelete_sq(L,i,e);
cout<<"删除后的表为:/n";
ListDisplay_sq(L);
cout<<endl;break;
case 3:exit(0);
}
}