顺序表的建立、插入、删除、查找
程序代码:
#include "iostream.h"
#define MaxSize 100
typedef int DataType;
class SeqList
{
DataType list[MaxSize];
int length;
public:
SeqList(){length=0;}
void SLCreat(int n);
void SLInsert(int i,DataType x);
void SLDelete(int i);
int GetLength(){return length;}
int SLFind(DataType x);
DataType SLGet(int i);
int SLIsEmpty();
void SLPrint();
};
//创建顺序表
void SeqList::SLCreat(int n)
{
DataType x;
cout << "请输入数据元素:";
for (int i=0;i<n;i++){
cin >>x;
list[i]=x;
length++;
}
}
//在顺序表L中的i位置插入数据元素x
void SeqList::SLInsert(int i,DataType x)
{
int k;
if (length>=MaxSize)
cout<< "表已满,无法插入!"<<endl;
else if (i<0||i>length)
cout <<"参数i不合理!" <<endl;
else
{
for (k=length;k>i;k--)
{list[k]=list[k-1];}
list[i]=x;
length++;
}
}
//删除第i个位置的数据元素
void SeqList::SLDelete(int i)
{
int k;
if (!SLIsEmpty())
cout << "表已空,无法删除!"<<endl;
else if (i<0||i>length)
cout << "参数i不合理!"<<endl;
else
{
for (k=i-1;k<length;k++)
list[k]=list[k+1];
length--;
}
}
//查找数据元素x在表中的位置
int SeqList::SLFind(DataType x)
{
int i=0;
while (i<length&&list[i]!=x) i++;
if (i>=length) return -1;
else return i+1;
}
//获取第i个位置的元素的数值
DataType SeqList::SLGet(int i)
{
if (i<0||i>length)
{
cout<<"参数i不合理!"<<endl;
return 0;
}
else
return list[i-1];
}
//判断顺序表是否为空
int SeqList::SLIsEmpty()
{
if (length<=0) return 0;
else return 1;
}
//奖顺序表显示在屏幕上
void SeqList::SLPrint()
{
if (!SLIsEmpty())
cout<<"空表!"<<endl;
else
for (int i=0;i<length;i++)
cout<<list[i]<<" ";
cout <<endl;
}
void main()
{
SeqList myList;
int i,n,flag=1,select;
DataType x;
cout<<"1、建立顺序表\n";
cout<<"2、求第i个位置上的数值\n";
cout<<"3、求x数值的位置:\n";
cout<<"4、在第i个位置插入数值元素x\n";
cout<<"5、删除第i个位置上的数值\n";
cout<<"6、退出\n";
cout<<endl;
while (flag)
{
cout<<"请选择操作: ";
cin>>select;
switch(select)
{
case 1:
cout<<"请输入顺序表的长度: ";
cin>>n;
myList.SLCreat(n);
cout<<"你所输入的顺序表为: ";
myList.SLPrint();
break;
case 2:
cout<<"请输入i的位置: ";
cin>>i;
cout<<"第"<<i<<"个位置上的数值为: "<<myList.SLGet(i)<<endl;
break;
case 3:
cout<<"请输入x的值: ";
cin>>x;
i=myList.SLFind(x);
if(i!=-1) cout<<"x的位置为: "<<i<<endl;
else cout<<"没有找到!";
break;
case 4:
cout<<"请输入要插入的元素的位置i和数值x: ";
cin>>i>>x;
myList.SLInsert(i,x);
cout<<"插入后的顺序表为: ";
myList.SLPrint();
break;
case 5:
cout<<"请输入要删除的元素的位置: ";
cin>>i;
myList.SLDelete(i);
cout<<"删除后的顺序表为: ";
myList.SLPrint();
break;
case 6:
flag=0;
break;
}
}
}
运行结果: