求人帮我写个顺序表的复制操作
#include <iostream>using namespace std;
typedef int datatype;
const Init_n=3,inc_n=2;
typedef struct{
int n,max;//n为尾元下标
datatype *a;
}list;
list Init(){/*初始化*/
list *L=(list*)malloc(sizeof list);
L->a=(datatype*)malloc(Init_n*sizeof(datatype));
if(!L->a){cout<<"内存不足!";exit(0);}
L->max=Init_n; L->n=-1; return *L;/*成功,置空表*/
}
void Out(list L){/*输出*/
int i; cout<<"(";
if(L.n>-1)cout<<L.a[0];/*输出首元*/
for(i=1;i<=L.n;i++)
cout<<","<<L.a[i];/*输出其它元素*/
cout<<")";
}
int Ins(list &L,int i,datatype x){/*插入*/
int j;
if(i<1||i>L.n+2){cout<<"位置错!"; return 0;}
if(L.n+1==L.max){
L.max+=inc_n;
L.a=(datatype*)realloc(L.a,L.max*sizeof(datatype));
if(!L.a){cout<<"内存不足!";return 0;}
}
for(j=L.n++;j>=i-1;j--)
L.a[j+1]=L.a[j];/*向后移动数据*/
L.a[i-1]=x; return 1;
}
int Del(list &L,int i){/*删除*/
int j;
if(i<1||i>L.n+1){
cout<<"无此插入位置!"; return 0;
}
for(j=i;j<=L.n;j++)
L.a[j-1]=L.a[j];/*前移数据*/
L.n--; return 1;/*修正尾元下标,成功*/
}
int Location(list &L,datatype x){/*查找*/
int i;
for(i=0;i<=L.n;i++)
if(L.a[i]==x)return i+1;/*成功,返回序号*/
return 0;/*失败,返回约定值*/
}
int Length(list &L){//求表长
int i,j=0;
if(!L.n)return 0;
for(i=-1;i<L.n;i++)if(L.a[i])j++;
return j;
}
datatype Get(list &L,int i){//取元素
int j;datatype k;
while(L.n>-1&&j<i)
for(j=0;j<=L.n;j++)k=L.a[i-1];
return k;
}
void Replace(list &L,int i,datatype x){//替换
int j;
while(L.a&&j<i)
for(j=0;j<=L.n;j++)L.a[i-1]=x;
}
void Clear(list &L){//清空
if(!L.n){cout<<"表空!";return;}
else L.n=-1;
}
void main(){/*测试*/
list L=Init();
cout<<"L="; Out(L);
cout<<"\n\n用插入生成顺序表:(1,5,3)";
if(!Ins(L,1,5)||!Ins(L,1,1)||!Ins(L,3,3))return;
cout<<"\nL="; Out(L);
cout<<"\n表长="<<Length(L);
cout<<"\n\n值为2的元素序号为:"<<Location(L,2);
cout<<"\n值为3的元素序号为:"<<Location(L,3);
cout<<"\n\n取2的元素:"<<Get(L,2);
Replace(L,2,2);
cout<<"\n\n将第二个元素替换为2后:";
cout<<"\nL="; Out(L);
cout<<"\n\n用删除删空表:";
if(!Del(L,2)||!Del(L,2)||!Del(L,1))return;
cout<<"\nL="; Out(L);
if(!Ins(L,1,5)||!Ins(L,1,1)||!Ins(L,3,3))return;
if(!Ins(L,1,5)||!Ins(L,1,1)||!Ins(L,3,3))return;
cout<<"\nL="; Out(L);
cout<<"\n表长="<<Length(L);
Clear(L);
cout<<"\nL="; Out(L);
cout<<endl;
}
以上为源程序 希望高手可以帮我加个 复制的基本操作 和输出~~
急用 多谢!!