#include<iostream> using namespace std; const int n=20; class aa { int *a; int i,j;//是A,B的长度; public: void chuangjian(); void xiaohui(); void qingkong(); void changdu(); void weizhi(); void qianqu(); void houji(); void charu(); void shanchu(); }; void aa::chuangjian() { i=j=0; a=new int[n]; cout<<"请输入表1中的数据(以负数结束)"<<endl; while(cin>>a[i]&&a[i]>0) { i++; } } void aa::xiaohui() { if(a=NULL) i=0; delete(a); cout<<"销毁成功"<<endl; } void aa::qingkong() { if(a=NULL) { cout<<"error!"<<endl; exit(-1); } i=j=0; cout<<"已经清空!"<<endl; } void aa::changdu() { cout<<"表A的长度为:"<<i<<endl; } void aa::weizhi() { int s; int k;//用于检索 cout<<"请输入需要查找的数:"<<endl; cin>>s; for(k=0;k<=i;k++) { if(s==a[k]) { cout<<"概数的位置为"<<k+1<<"个"<<endl; } } } void aa::qianqu() { int s; int k;//用于检索 cout<<"请输入需要查找的数:"<<endl; cin>>s; for(k=0;k<=i;k++) { if(s==a[k]) { cout<<"该数的前驱为: "<<a[k-1]<<endl; } } } void aa::houji() { int s; int k;//用于检索 cout<<"请输入需要查找的数:"<<endl; cin>>s; for(k=0;k<=i;k++) { if(s==a[k]) { cout<<"该数的后继为: "<<a[k+1]<<endl; } } } void aa::charu() { int s;//插入的数据 int r;//插入的位置 int k;//用于检索 cout<<"请输入需要插入的数:"<<endl; cin>>s; cout<<"请输入需要插入数的位置"<<endl; cin>>r; if(r<0||r>i) cout<<"插入位置错误!"<<endl; for(k=i;k>=r;k--) { a[k+1]=a[k]; } a[r]=s; cout<<"插入之后的数据:"<<endl; for(k=0;k<i+1;k++) cout<<" "<<a[k]; } void aa::shanchu() { int s; int fl; int k;//用于检索 int r;//用于删除 cout<<"请输入需要删除的数字:"<<endl; cin>>s; for(k=0;k<=i;k++) { fl=0; if(s==a[k]) { fl=1; break; } else fl=0; } if(fl==1) { for(r=k;r<i;r++) { a[r]=a[r+1]; } } else if(fl==0) cout<<"该元素不存在,无法删除!"<<endl; for(r=0;r<i-1;r++) cout<<" "<<a[r]; } void show() { cout<<" 请选择 :"<<endl; cout<<" 1.创建 "<<endl; cout<<" 2.销毁 "<<endl; cout<<" 3.清空 "<<endl; cout<<" 4.长度 "<<endl; cout<<" 5.位置 "<<endl; cout<<" 6.前驱 "<<endl; cout<<" 7.后继 "<<endl; cout<<" 8.插入 "<<endl; cout<<" 9.删除 "<<endl; } int main() { int leap; aa *p; p=new aa; show(); while(cin>>leap&&leap<12&&leap>0) { system("cls"); switch(leap) { case 1:p->chuangjian();break; case 2:p->xiaohui();break; case 3:p->qingkong();break; case 4:p->changdu();break; case 5:p->weizhi();break; case 6:p->qianqu();break; case 7:p->houji();break; case 8:p->charu();break; case 9:p->shanchu();break; } show(); } return 0; }
解决方案
80
类中加一个成员变量,一开始为false,初始后修改为true,其他操作先判断这个变量,为true才继续