顺序表基本操作: 插入,删除,查找
#include<iostream>
using namespace std;
//指定空间大小
###### #define maxsize 100
//结构体
typedef struct
{
int data[maxsize];
int length;
}Sqlist;
//初始化
void init(Sqlist &l)
{
l.length=0;
}
//插入
//表l指定位置p插入元素e
//元素后往前,后移动一个位置,到p
int insert(Sqlist &l,int p,int e)
{
if(p<0||p>l.length-1||l.length==maxsize)
return 0;
for(int i=l.length-1;i>p;--i)
l.data[i+1]=l.data[i];
l.data[p]=e;
++(l.length);
return 1;
}
//删除
//l的指定位置p删除e
//从p位置后元素,前移一个位置 ,表长+1
int Delete(Sqlist &l,int p,int &e)
{
if(p<0||p>l.length-1||l.length==maxsize)
return 0;
e=l.data[p];
for(int i=p;i>l.length-1;++i)
l.data[i]=l.data[i+1];
--(l.length);
return 1;
}
//查找(定位)
//按元素值查找,返回找到位置下标
int fine(Sqlist l,int e)
{
for(int i=0;i<l.length;++i)
if(e==l.data[i])
return i;
return -1;
}
//指定位置元素
int get(Sqlist l,int p,int e)
{
if(p<0||p>l.length||l.length==maxsize)
return 0;
e=l.data[p];
return 1;
}
//打印线性表元素
void print(Sqlist &l,int n)
{
cout<<"线性表元素:"<<endl;
for(int i=0;i<=n-1;++i)
cout<<l.data[i]<<",";
cout<<endl;
}
//主函数
void menu()
{
cout<<"========顺序表========="<<endl;
cout<<" 0.打印表" <<endl;
cout<<" 1.初始化" <<endl;
cout<<" 2.插入" <<endl;
cout<<" 3.删除" <<endl;
cout<<" 4.按值查找" <<endl;
cout<<" 5.求指定位置元素" <<endl;
}
int main()
{
menu();
Sqlist l;
cout<<"输入表长:";
cin>>l.length;
cout<<"输入线性表个数:";
int n;
cin>>n;
cout<<"输入线性表元素:"<<endl;
for(int i=0;i<=n-1;++i)
cin>>l.data[i];
int f=1;
while(f==1){
cout<<"选择你的操作:";
int c=0;
cin>>c;
switch(c)
{
case 0:
print(l,n);
break;
case 1:
init(l);
break;
case 2:
cout<<"输入要插入的位置,元素:";
int p1,e1;
cin>>p1;
cin>>e1;
if(insert(l,p1,e1)==0)
{
cout<<"插入失败!"<<endl;
print(l,n);
}
else{
cout<<"插入成功!"<<endl;
print(l,n+1);
}
break;
case 3:
cout<<"输入要删除的位置,元素:";
int p2,e2;
cin>>p2;
cin>>e2;
if(Delete(l,p2,e2)==0)
{
cout<<"删除失败!"<<endl;
print(l,n);
}
else{
cout<<"删除成功!"<<endl;
print(l,n-1);
}
break;
case 4:
cout<<"输入要定位的元素:";
int e3;
cin>>e3;
if(fine(l,e3)==0)
cout<<"定位失败!"<<endl;
else cout<<"定位成功!"<<endl;
break;
case 5:
cout<<"输入要查找的位置,元素:";
int p4,e4;
cin>>p4;
cin>>e4;
if(get(l,p4,e4)==0)
cout<<"查找失败!"<<endl;
else cout<<"查找成功!"<<endl;
break;
default:
cout<<"选择错误!";
break;
}
cout<<"===================="<<endl;
cout<<"是否继续(1|0)?";
cin>>f;
if(f==1) continue;
else break;
}
return 0;
}```