数据结构一顺序表

<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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值