顺序表的c++实现

#include<iostream>
#include<cstdio>
using namespace std;
const int MaxSize=100;//顺序表的最大长度 
template<class DataType>//将其设成模板,class替换成TypeName也是一样的 
class SeqList
{
public:
	SeqList(){length=0;};//建立空的顺序表 
	SeqList(DataType a[],int n);//建立长度为n的顺序表 
	~SeqList(){};//构析函数 
	int Length(){return length;};//求线性表的长度 
	DataType Get(int i);//按位查找,查找第i个元素的值 
	int Locate(DataType x);//按值查找,查找值为x的元素序号 
	void Insert(int i,DataType x);//插入操作,在第i个位置插入值为x的元素 
	DataType Delete(int i);//删除操作,删除第i个元素 
	int Empty(){
	if(length==0)
		cout<<"空";
	else cout<<"非空";	
	};//判断线性表是否为空 
	void PrintList();//遍历操作,按序号依次输出各元素 
private:
	DataType data[MaxSize];//存放数据元素的数组 
	int length;//线性表的长度 
 } ;
 
template<class DataType>
SeqList<DataType>::SeqList(DataType a[],int n)
{
	if(n>MaxSize) throw "wrong parameter";
	for(int i=0;i<n;i++)
		data[i]=a[i];
	length=n;
}

template<class DataType>
DataType SeqList<DataType>::Get(int i)
{
	if(i<1&&i>length) throw "wrong location";
	else return data[i-1];
}

template<class DataType>
int SeqList<DataType>::Locate(DataType x)
{
	for(int i=0;i<length;i++)
		if(data[i]==x) return i+1;
	return 0;
}

template<class DataType>
void SeqList<DataType>::Insert(int i,DataType x)
{
	if(length>=MaxSize) throw "overflow";
	if(i<1||i>length+1) throw "wrong location";
	for(int j=length;j>=i;j--)
		data[j]=data[j-1];
	data[i-1]=x;
	length++;
}

template <class DataType>
DataType SeqList<DataType>::Delete(int i)
{
    int x;
    if(length==0) throw "Underflow";
    if(i<1 || i>length) throw "wrong Location";
    x = data[i-1];
    for(int j=i;j<length;j++)
        data[j-1] = data[j];
    length--;
    return x;
}

template <class DataType>
void SeqList<DataType>::PrintList()
{
    for(int i=0;i<length;i++)
        cout<<data[i]<<" ";
    printf("\n");
}



int main()
{
    int r[5]={2,6,8,1,11},i,x;
    SeqList<int>L(r,5);
    cout<<"当前线性表的数据为:";
    L.PrintList();
    cout<<"下面进行操作:查找第i个元素的值,请输入i:";
	cin>>i;
	cout<<L.Get(i)<<endl;
	cout<<"下面进行操作:查找值为x的元素序号,请输入x:";
	cin>>x; 
	cout<<L.Locate(x)<<endl;
	cout<<"下面进行操作:在第i个位置插入值为x的元素,请输入i和x(以空格分开):";
	cin>>i>>x;
	L.Insert(i,x);
	cout<<"当前线性表的数据为:";
	L.PrintList(); 
	cout<<"下面进行操作:删除第i个元素,请输入i:";
	cin>>i;
	L.Delete(i);
	cout<<"当前线性表的数据为:";
	L.PrintList(); 
	cout<<"线性表空or非空?";
	L.Empty();
	return 0;
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用c++实现顺序表:多文件编程,层次清晰,函数有注释 SeqList();//构造函数,存储的元素个数设为0 bool setLength(size_t length);//设置已经存储的元素个数 bool addElement(ElemType element);//把某个元素添加到顺序表末尾 bool addElement(ElemType element , size_t n);//插入一个元素,使其成为第n个元素,其余元素后移 bool delElement();//删除所有的元素 bool delElement(size_t n);//删除第n个元素 bool delElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,把这个元素删除 bool replaceElement(ElemType element , size_t n);//使用一个元素,替换掉第n个元素 bool swapElement(size_t n1 , size_t n2);//把第n1个元素和第n2个元素交换 ElemType* getElement();//得到数组头的指针 ElemType* getElement(size_t n);//得到第n个元素的指针 size_t getLength();//得到存储的元素个数 size_t getMaxSize();//得到顺序表容量 bool showElementDetail();//输出所有的元素细节 bool showElementDetail(size_t n);//输出第n个元素的细节 bool showElementDetail(string elementDetailType,string elementDetail);//通过某个元素细节找到元素,输出元素所有细节 size_t findElement(string elementDetailType,string elementDetail);//通过某个元素细节找到元素位置 static int inputAInt(int min = 0,int max = 9,int defaultValue = -1);//从键盘读取,限制为一个min到max间的整数,非法情况返回defaultValue void startControlLoop();//打开控制界面 ~SeqList();//析构函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值