顺序表基本操作的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、顺序表基本操作的实现
[问题描述] 当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置。若是欲删除第i个元素时,也必须把第i个元素之后的所有元素前移一个位置。
[基本要求] 要求生成顺序表时,可以键盘上读取元素,用顺序存储结构实现存储。
#include
#include"iostream.h"
#define MaxSize 25
typedef int DataType;
class SeqList
{
DataType list[MaxSize];
int length;
public:
SeqList(){length=0;}
void SLCreat(int n);//创建顺序表
void SLInsert(int i,DataType x);//在顺序表L中的第i个位置插入数据元素x
void SLDelete(int i); //在顺序表L中的第i个位置删除数据元素
DataType SLGet(int i); //获取第i个位置的元素位置
DataType SLSum();//求和
int SLIsEmpty();//判断顺序表是否为空
void SLPrint();//将顺序表显示在屏幕上
};
//创建顺序表
void SeqList::SLCreat (int n)
{
DataType x;
cout<<"请输入数据元素值: ";
for(int i=0;i { cin>>x; list[i]=x; length++; } } //在顺序表L中的i位置插入数据元素x void SeqList::SLInsert (int i,DataType x) { int k; if(length>=MaxSize) cout<<"表已满,无法插入!"< cout<<"参数i不合理!"< else { for(k=length;k>i;k--) { list[k]=list[k-1]; } list[i]=list[i-1]; list[i-1]=x; length++; } } //删除第i个位置的数据元素 void SeqList::SLDelete (int i) { int k; if(!SLIsEmpty()) cout<<"表已空,无法删除!"< cout<<"参数i不合理!"< { for(k=i-1;k list[k]=list[k+1]; length--; } } //获取第i个位置的元素的数值DataType SeqList::SLGet (int i) { if (i<0||i>length) { cout<<"参数i不合理!"< } else return list[i-1]; } //判断顺序表是否为空 int SeqList::SLIsEmpty () { if(length<=0)return 0; else return 1; } //将顺序表显示在屏幕上void SeqList::SLPrint () { if(!SLIsEmpty()) cout<<"空表!"< for(int i=0;i cout< cout< } //求和 DataType SeqList::SLSum() { int m=0; for(int i=0;i { m=m+list[i]; } return m; } void main() { SeqList mylist; int i,n,flag=1,select; DataType x; cout<<" 1.建立顺序表\n"; cout<<" 2.求第i个位置上的数值\n"; cout<<" 3.在第i个位置前上插入数值元素x\n"; cout<<" 4.删除第i个位置上的数值\n"; cout<<" 5.该顺序表上各元素之和\n"; cout<<" 6.输出显示\n"; cout<<" 7.退出\n"; cout<<"特别说明:第一次请选择1,以后就不要选择1了!"< { cout<<"请选择: "; cin>>select; switch(select) { case 1: cout<<"请输入顺序表长度:"; cin>>n;