数据结构一顺序表
2016-03-30 21:38
501 查看
<span style="white-space:pre"> </span>数据结构第一章实验,写了一个简单版本的顺序表,添加了一个简单的菜单。
<span style="white-space:pre"> </span>
#include <iostream.h>#include<stdlib.h>const int defaultSize=100;class SeqList{protected:int *data;int maxSize;int last;// void reSize(int newSize);//改变数组空间大小public:SeqList(int sz=defaultSize);// SeqList(SeqList<T>& L);~SeqList(){delete[] data;}int Size()const{return maxSize;}int Length()const{return last+1;}void Search()const;//查询void Locate()const;//定位bool getData(int i,int& x)const{if(i>1&&i<last+1){x=data[i-1];return true;}else return false;}bool setData(int i,int& x){if(i>1&&i<last+1){x=data[i-1];}}bool Insert();//插入bool Remove();//删除bool IsEmpty(){return last==-1?true:false;}bool IsFull(){return last==maxSize-1?true:false;}void input();//写入void output();//输出void upData();//更新// SeqList<T>operator=(SeqList<T>& L);};SeqList::SeqList(int sz){ //构造函数if(sz>0){maxSize=sz;last=-1;data=new int[maxSize];if(data==NULL){cerr<<"error!!"<<endl;exit(1);}}}void SeqList::input(){ //输入cout<<"开始建立顺序表,输入表中元素个数:";while(1){cin>>last;if(last<=maxSize-1)break;cout<<"输入有误,范围不能超过"<<maxSize-1<<":";}for(int i=0;i<last;i++){cin>>data[i];cout<<i+1<<"\t";}}void SeqList::output(){ //输出cout<<endl;cout<<"最后位置为:"<<last<<endl;for(int i=0;i<last;i++){cout<<"#"<<i+1<<":"<<data[i]<<endl;}}bool SeqList::Insert(){ //插入if(last==maxSize-1)return false;int i,x;cout<<endl;cout<<"输入插入的数字:";cin>>x;cout<<"输入插入的位置:";cin>>i;if(i<0||i>maxSize-1)return false;for(int j=last;j>=i;j--)data[j+1]=data[j];data[i]=x;last++;cout<<"插入成功!"<<endl;return true;}bool SeqList::Remove(){ //删除int i,x;if(last==-1)return false;cout<<"\n请输入删除的位置:";cin>>i;if(i<0||i>maxSize-1)return false;x=data[i-1];for(int j=i;j<=last;j++)data[j-1]=data[j];last--;cout<<"delete成功!删除的数为:"<<x<<endl;return true;}void SeqList::Search()const{ //查询int x;cout<<"\n请输入查询的数:";cin>>x;for(int i=0;i<=last;i++)if(data[i]==x)cout<<"数字在位置:"<<i+1;}void SeqList::Locate()const{ //定位int i;cout<<"输入位置:";cin>>i;if(i>=1||i<=last+1)cout<<"位置上的数为:"<<data[i-1];}void SeqList::upData(){ //更新int i,x;cout<<"输入位置:";cin>>i;if(i<1||i>last+1) return;cout<<"输入更新的数据:";cin>>x;data[i-1]=x;cout<<"\n更新成功"<<endl;}int main(){int n;SeqList s1(30);s1.input();while(1){cout<<"\n------------------------"<<endl;cout<<"1,插入"<<endl;cout<<"2,删除"<<endl;cout<<"3,查找"<<endl;cout<<"4,定位"<<endl;cout<<"5,输出"<<endl;cout<<"6,更新"<<endl;cout<<"7,退出"<<endl;cout<<"-----------------------"<<endl;cout<<"输入选项:";cin>>n;switch(n){case 1:s1.Insert();break;case 2:s1.Remove();break;case 3:s1.Search();break;case 4:s1.Locate();break;case 5:s1.output();break;case 6:s1.upData();break;case 7:exit(1);default:cout<<"输入有误,请重试"<<endl;}}//////return 0;}