有关顺序表的简单算法
#include<iostream.h>#include<stdlib.h>
#define elemtype int
const int maxsize=9;
struct seqlist
{
elemtype a[9];
int len;
};
seqlist insert_seqlist (seqlist L,elemtype x,int i)//插入函数
{
int j;
if (L.len>=maxsize-1)
cout<<"表满,无插入"<<endl;
else if((i<1) || (i>L.len+1))
cout<<"位置错误"<<endl;
else
{
for (j=L.len;j>=i;j--)
L.a[j+1]=L.a[j];//元素后移
L.a[i]=x;//插入元素
L.len++;//表长度加1
}
return L;
}
seqlist delete_seqlist(seqlist L,int i)//删除函数
{
int j;
if ((i<1)||(i>=L.len))
cout<<"位置错误"<<endl;
else{
for (j=i+1;j<=L.len;j++)
L.a[j-1]=L.a[j];//元素前移
L.len--;//表长度减1
}
return L;
}
void print_seqlist (seqlist L)//输出函数
{
int j;
cout<<"此时的顺序表中的元素如下:"<<endl;
for (j=1;j<=L.len;j++)
cout<<L.a[j]<<" ";
cout<<endl;
}
void menu()
{
cout<<" \n\n\t\t\t顺 序 表\n\n\n\t\t\t0 退 出 \n\n\t\t\t1 插 入\n\n\t\t\t2 删 除\n\n\t\t\t3 显 示 \n\n";
cout <<"请输入要进行的操作(0-->3):";
}
void main ()//主函数
{
seqlist L;
elemtype x;
int n;
cout<<"请输入表中元素个数:";
cin>>n;
for (int j=1;j<=n;j++)
{
cout<<"请输入第"<<j<<"数"<<endl;
cin>>L.a[j];
}//建立顺序表
L.len=n;
print_seqlist(L);//调用输出函数,输出表中元素
menu();
while (1)
{
int d;
cin>>d;
switch(d)
{
case 0: exit(0);menu();break;
case 1:
{ cout<<"请输入要插入的元素及位置:";
cin>>x>>j;
L=insert_seqlist (L,x,j);
print_seqlist(L);//输出插入后的表中元素
menu();break;
}
case 2:
{
cout<<"请输入要删除的元素位置:";
cin>>j;
L=delete_seqlist(L,j);//调用删除函数
print_seqlist(L);//输出删除后的表中元素
menu();break;
}
case 3: print_seqlist(L);menu();break;
default:
menu();
cout<<"输入无效≌请重新输入(0======== 3)"<<endl;
break;
}
}
cout<<endl;
}