当前位置:
文档之家› 线性表顺序存储实现、插入、删除操作
线性表顺序存储实现、插入、删除操作
for(i=0;i<list_init_size;i++)
{
*(l.elem+i)=i;
if(i<10)
cout<<" "<<*(l.elem+i)<<" ";
else
cout<<*(l.elem+i)<<" ";}
l.length=i;
l.listsize=list_init_size;
cout<<endl;
*(p+1)=*p;
*q=e;
++l.length;
int j;
for(j=0;j<l.length;j++)
if(j<10)
{
cout<<" "<<*(l.elem+j)<<" ";
}
else
{
cout<<*(l.elem+j)<<" ";
}
cout<<endl;
return ok;
}
int listdelete_sq(sqlist &l,int n,elemtype;请输入要删除的位置";
cin>>n;
while(n<1||n>l.length)
{
cout<<"输出错误!请输入1到"<<l.length<<"之间的数"<<endl;
cin>>n;
}
p=&(l.elem[n-1]);
*f=*p;
cout<<"要删除的位置是"<<n<<endl;
cout<<"要删除的数据是"<<*f<<endl;
q=l.elem+l.length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--l.length;
int j;
for(j=0;j<l.length;j++)
{
if(j<10)
cout<<" "<<l.elem[j]<<" ";
else
cout<<l.elem[j]<<" ";
}
cout<<endl;
}
}
cout<<"插入位置为:"<<m<<endl;
cout<<"请输入插入数据:";
cin>>e;
cout<<"插入数据为:"<<e<<endl;
elemtype *newbase;
newbase=(elemtype*)realloc(l.elem,(l.listsize+listincrement)*sizeof(elemtype));
elemtype *q;
elemtype *p;
typedef struct{
elemtype *elem;
int length;
int listsize;
}sqlist;
int initlist_sq(sqlist &l)//线性表动态分配存储结构//
{
l.elem=(elemtype*)malloc(list_init_size*sizeof(elemtype));
if(!newbase)
{
cout<<" ERROR! HAVE NO SPACE"<<endl;
exit(overflow);
}
else
{
l.elem=newbase;
l.listsize+=listincrement;
}
q=&(l.elem[m-1]);
for(p=&(l.elem[l.length-1]);p>=q;--p)
if(!l.elem)
{
cout<<"the list have no space"<<endl;
exit(overflow);}
else{
l.length=0;
l.listsize=list_init_size;}
return ok;
}
void addelem(sqlist &l)
{
int i=0;
#include<iostream.h>
#include<stdlib.h>
#define list_init_size 100
#define listincrement 10
#define ok 1
#define overflow -1
#define elemtype int
#define error -1
}
int listinsert_sq(sqlist &l,int m,elemtype e)//插入函数//
{cout<<"请输入插入位置:";
cin>>m;
while(m<1||m>l.length+1)
{
cout<<"输入错误!请输入1到"<<l.length<<"之间的整数"<<endl;
cin>>m;
return ok;
}
void main()
{
sqlist l;
initlist_sq(l);
addelem(l);
int m,n,e;
listinsert_sq(l,m,e);
elemtype *f;
f=(elemtype*)malloc(sizeof(elemtype));
listdelete_sq(l,n,f);