您的位置:首页 > 理论基础 > 数据结构算法

数据结构一顺序表

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;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 编程 c++