#include<iostream>
#include<stdlib.h>
#define Maxsize 50
using namespace std;
typedef char ElemType;
typedef struct
{
ElemType data[Maxsize];
int length ;
} SqList;
int main()
{
void InitList(SqList *&L);
void ListInsert(SqList *&L,int i ,ElemType e);
void DisList(SqList*L);
void ListLength(SqList*L);
void ListEmpty(SqList*L);
void GetElem(SqList*L ,int i);
void LocateElem(SqList*L ,ElemType e);
void ListDelete(SqList*&L,int i,ElemType e);
void DestoryList(SqList*&L);
cout<<" ============输入序号来运行各种步骤========="<<endl;
cout<<"1:初始化线性表 ";
cout<<"2:采用尾插法依次插入元素a,b,c,d,e"<<endl;
cout<<"3:输出线性表 ";
cout<<"4:输出线性表长度"<<endl;
cout<<"5:判断线性表是够为空 ";
cout<<"6:输出线性表的第3个元素"<<endl;
cout<<"7:输出元素a的位置 ";
cout<<"8:在第4个元素位置上插入元素f"<<endl;
cout<<"9:输出线性表L ";
cout<<"10:删除L的第3个元素"<<endl;
cout<<"11:输出线性表L ";
cout<<"12:释放顺序表L"<<endl;
SqList *L;
int num;
while (cin>>num)
{
switch (num)
{
case 1: InitList(L);break;
case 2:char temp;
ListInsert(L,1,temp);
ListInsert(L,2,temp);
ListInsert(L,3,temp);
ListInsert(L,4,temp);
ListInsert(L,5,temp);break;
case 3:DisList(L);break;
case 4:ListLength(L);break;
case 5:ListEmpty(L);break;
case 6:GetElem(L ,3);break;
case 7: LocateElem(L,'a');break;
case 8:char temp1;
ListInsert(L,4,temp1);break;
case 9:DisList(L);break;
case 10: char temp2;
ListDelete(L,3,temp2);break;
case 11:DisList(L);break;
case 12: DestoryList(L);
default:cout<<"输入参数有错误,请输入1~12之间的数字来显示命令"<<endl;
}
}
return 0;
}
void InitList(SqList *&L)
{
L=(SqList*)malloc(sizeof(SqList));
L->length=0;
cout<<"线性表初始化成功!"<<endl;
}
void ListInsert(SqList *&L,int i ,ElemType e)
{
cout<<"请输入插入元素 ";
cin>>e;
if (i<1||i>L->length+1)
{
cout<<"插入越界!!!"<<endl;
}
else
{
for(int j=L->length+1;j>i;j--)
{
L->data[j]=L->data[j-1];
}
L->data[i]=e;
L->length++;
cout<<"插入数据元素成功,L->length="<<L->length<<endl;
}
}
void DisList(SqList*L)
{
for (int i=1;i<=L->length;++i)
{
cout<<L->data[i]<<" ";
}
cout<<endl;
}
void ListLength(SqList*L)
{
cout<<"目前线性表的长度为L->length="<<L->length<<endl;
}
void ListEmpty(SqList*L)
{
if(L->length==0)
{
cout<<"此时的线性表是空表!"<<endl;
}
else
{
cout<<"此时的线性表不是空表"<<endl;
}
}
void GetElem(SqList*L ,int i)
{
if(i<1||i>L->length)
{
cout<<"查找数据编号越界,退出!!!"<<endl;
}
else
{
cout<<"依据编号查找到的元素为"<<L->data[i]<<endl;
}
}
void LocateElem(SqList*L ,ElemType e)
{
int i=1;
while (i<=L->length&&L->data[i]!=e)
{
i++;
}
if(i>L->length)
{
cout<<"对不起,未找到该元素"<<endl;
}
else
{
cout<<"该元素的位置为"<<i<<endl;
}
}
void ListDelete(SqList*&L,int i,ElemType e)
{
if(i<1||i>L->length)
{
cout<<"参数错误"<<endl;
}
else
{
e=L->data[i];
for(int j=i;j<L->length;j++)
{
L->data[j]=L->data[j+1];
}
L->length--;
cout<<"删除元素成功"<<endl;
}
}
void DestoryList(SqList*&L)
{
free(L);
cout<<"销毁线性表成功"<<endl;
}
实现顺序表的各种基本运算(利用线性表来实现)
最新推荐文章于 2023-02-04 13:10:56 发布