【教程】手把手教你实现数据结构顺序表(2)!

#include <iostream>
//顺序表
#define maxLen 100
using namespace std;
typedef struct elemType {
int elemNo;
string elemName;
}elemType;
typedef struct sqList {
elemType data[maxLen];
int length;
}sqList;
void initList(sqList &sq){
cout<<endl<<"初始化&清除成功!"<<endl;
sq.length = 0;
}
int isPok(sqList sq){
cout<<"请输入要操作的位置:";
int p = 1;
cin>>p;
if(p>=1&&p<=sq.length){
return p;
}
cout<<"输入的位置不合法!";
return -1;
}
void allList(sqList sq) { //遍历数据
cout<<endl<<"遍历结果如下:"<<endl;
cout<<"elemNo"<<" "<<"elemName"<<endl;
for(int i = 0;i<sq.length;i++){
cout<<sq.data[i].elemNo<<" "<<sq.data[i].elemName<<endl;
}
cout<<"当前数据个数为:"<<sq.length<<"个"<<endl;
}
void addList(sqList &sq, elemType elem) {//增
if(sq.length>=0 && sq.length<maxLen-1){
elem.elemNo=sq.length;
sq.data[sq.length++] = elem;
cout<<"添加成功!"<<endl;
}
else cout<<"当前顺序表已满!!"<<endl;
}
void delList(sqList &sq) {//删
int p = isPok(sq);
if(p == - 1){
cout<<"删除失败!";
return;
}
else {
for (int i = p; i<sq.length; i++){
sq.data[i-1] = sq.data[i];
}
sq.length--;
cout<<"删除成功!";
}
}
elemType setAndGetEmem(int elemNo, string elemName) {
elemType elem;
elem.elemNo = elemNo;
elem.elemName = elemName;
return elem;
}
void changeList(sqList &sq) {//改
int p = isPok(sq);
if(p == -1){
cout<<"失败!";
return;
}
else{
sq.data[p-1] = setAndGetEmem(10086,"中国移不动");
cout<<"修改成功!";
}
}
elemType getList(sqList sq) {//查
elemType t;
int p = isPok(sq);
if(p == -1){
cout<<"查询失败!";
return t;
}
else{
cout<<"查询成功!结果为:"<<endl;
cout<<sq.data[p-1].elemNo<<" "<<sq.data[p-1].elemName<<endl;
t = sq.data[p-1];
return t;
}
}
void menu (){
cout<<endl<<"\n1.初始化&清除顺序表\n2.增加数据\n3.删除数据\n4.修改数据\n5.查询数据\n6.遍历数据\n7.退出"<<endl;
cout<<"请输入选项: "<<endl;
}
int main() {
sqList sq; //声明变量
while(1){
menu();
int choice = 1;
cin>>choice;
switch(choice){
case 1:initList(sq);//初始化
break;
case 2:addList(sq, setAndGetEmem(1, "test")); //增
break;
case 3:delList(sq); //删
break;
case 4:changeList(sq); //改
break;
case 5:getList(sq); //查
break;
case 6:allList(sq); //遍历
break;
case 7:cout<<"已退出!!";return 0;
default: cout<<"输入有误!"<<endl;
}
}
return 0;
}