实现线性表的初始化,查找元素,插入元素,删除元素功能
#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
#define ElemType int
typedef struct
{
ElemType elem[MAXSIZE];
int last;//线性表中最后一个元素在数组中的位置,下标值
}SeqList;
int Locate (SeqList L,ElemType e)
{//根据元素值查找元素位置
int i=0;
while((i<=L.last)&&(L.elem[i]!=e))
{
i++;
}
if(i<=L.last)
return i+1;
else
return -1;
}
void Insert(SeqList *L,ElemType e,int i)
{//在第i个位置之前插入元素e
if(i<1||i>L->last+2)
{
cout<<"插入位置不合法!"<<endl;
return ;
}
if(L->last>=MAXSIZE-1)
{
cout<<"表已满,无法插入!"<<endl;
return ;
}
for(int k=L->last;k>=i-1;--k)
{
L->elem[k+1]=L->elem[k];
}
L->elem[i-1]=e;
L->last++;
return ;
}
void Delete (SeqList *L,ElemType e)
{//删除值为e的元素
int i=0;
for(int j=0;j<L->last+1;j++)
{
if(e==L->elem[j])
{
i=j+1;
break;
}
}
if(i<1||i>L->last+1)
{
cout<<"线性表中不存在该元素!"<<endl;
return ;
}
for(int k=i-1;k<L->last+1;k++)
{
L->elem[k]=L->elem[k+1];
}
L->last--;
return ;
}
void show(SeqList *L)
{//输出线性表
for(int i=0;i<=L->last;i++)
{
cout<<L->elem[i]<<" ";
}
cout<<endl;
}
int main()
{
SeqList L;
int len;
cout<<"定义线性表长度:";
cin>>len;
L.last=len-1;
cout<<"输入线性表:";
for(int i=0;i<len;i++)
{
cin>>L.elem[i];
}
int op;
cout<<"你的操作:";
cin>>op;
do
{
if(op==0)
break;
if(op==1)
{
cout<<"查找"<<endl;
ElemType e1;
cout<<"输入待查找的元素:";
cin>>e1;
int location=Locate(L,e1);
if(location==-1)
cout<<"线性表中无此元素"<<endl;
else
cout<<"查找成功!该元素位于第"<<location<<"个位置"<<endl;
cout<<endl;
}
else if(op==2)
{
cout<<"插入"<<endl;
ElemType e2;
int loc1;
cout<<"输入待插入的元素:";
cin>>e2;
cout<<"输入待插入的位置:";
cin>>loc1;
Insert(&L,e2,loc1);
cout<<"插入成功!更新线性表:";
show(&L);
cout<<endl;
}
else if(op==3)
{
cout<<"删除"<<endl;
ElemType e3;
cout<<"输入待删除元素:";
cin>>e3;
Delete(&L,e3);
cout<<"删除成功!更新线性表:";
show(&L);
cout<<endl;
}
cout<<"你的操作:";
}while(cin>>op);
return 0;
}