#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; } } }
运行结果:
|
|