C++实现顺序表的各项操作
代码如下:
#include <iostream>
using namespace std;
typedef struct sqlist//建立顺序表结点
{
int data[100];
int length;
}sqlist1;//结构体实例sqlist1
void creatlist (struct sqlist &sqlist1)//建表
{
int j;
int elem;
int leng=0;
for(j=1;j<6;j++)
{
cout<<"开始建表,请依次输入元素 : ";
cin>>elem;
sqlist1.data[j]=elem;
leng=leng+1;
}
sqlist1.length=leng;
}
void getelem(struct sqlist sqlist1)//输入位置输出元素
{
int n;
int elemth;
int leng;
leng=sqlist1.length;
if(leng!=0)
{
cout<<'\n'<<"请输入你想查找的元素的位置: ";
cin>>n;
if(n>=1&&n<=leng)//输入的位置必须大于1小于表长
{
elemth=sqlist1.data[n];
cout<<"你查找的元素为 :";
cout<<elemth<<endl;
}
else
{
cout<<"错误,再试一次";
getelem(sqlist1);//调用自己在执行一次直到输入的位置符合要求
}
}
else
{
cout<<'\n'<<"空表";//若表长为0,说明为空表
}
}
int findelem(struct sqlist sqlist1)//已知元素求位置
{
int e;
int leng;
leng=sqlist1.length;
if(leng!=0)
{
cout<<"请输入元素以获取位置: ";
cin>>e;
int i;
for(i=1;i<leng+1;i++)
{
if (e==sqlist1.data[i])
{
cout<<"位置是 : ";
cout<<i<<endl;
return(i);
}
}
cout<<'\n'<<"找不到你输入的元素 ";
return(0);
}
else
{
cout<<'\n'<<"空表,找不到你输入的元素 ";
return(0);
}
}
void insert(struct sqlist &sqlist1)//插入元素
{
int x;int loc;int leng;int i;
leng=sqlist1.length;
cout<<'\n'<<"请输入你想插入的元素 : ";
cin>>x;
cout<<'\n'<<"请输入你想插入的位置 : ";
cin>>loc;
if(loc>=1&&loc<=leng+1)//判断输入的位置的合法性
{
for(i=leng+1;i>loc;i--)
{
sqlist1.data[i]=sqlist1.data[i-1];//逐次向后挪一位
}
sqlist1.data[loc]=x;
sqlist1.length=leng+1;
}
else
{
cout<<"错误,再来一次";
insert(sqlist1);//位置不合法调用自己再来一遍
}
}
void showlist(struct sqlist sqlist1)//打印表
{
int i;int leng;int elem;
leng=sqlist1.length;
cout<<'\n'<<"表为 : ";
if(leng!=0)
{
for(i=1;i<=leng;i++)
{
elem=sqlist1.data[i];
cout<<'\t'<<elem;
}
cout<<'\n';
}
else
{
cout<<" 空表 ";
}
}
void listdelete(struct sqlist &sqlist1)//按位置删除元素
{
int loc;int leng;int i;
leng=sqlist1.length;
if(leng!=0)//判空
{
cout<<'\n'<<"请输入你想删除元素的位置";
cin>>loc;
if(loc>=1&&loc<=leng)
{
for(i=loc;i<leng;i++)//逐次向前挪一位
{
sqlist1.data[loc]=sqlist1.data[loc+1];
}
sqlist1.length=leng-1;
}
else
{
cout<<'\n'<<"错误,再来一次";
listdelete(sqlist1);//调用自己
}
}
else
{
cout<<'\n'<<"错误,空表";
}
}
void initlist(struct sqlist &sqlist1)//初始化
{
cout<<'\n'<<"表将被初始化";
sqlist1.length=0;//表长为零
}
int main()
{
struct sqlist sqlist1;
creatlist (sqlist1);
showlist(sqlist1);
getelem(sqlist1);
findelem(sqlist1);
listdelete(sqlist1);
showlist(sqlist1);
insert(sqlist1);
showlist(sqlist1);
initlist(sqlist1);
showlist(sqlist1);
return 0;
}
运行结果如下: