顺序表C++实现

#SeqList.h文件

#ifndef SeqList_H
#define SeqList_H
const int MaxSize=100;
template <typename DataType>
class SeqList
{
	public:
		SeqList(){Length =0;//无参赋值 
		}
		SeqList(int L,DataType a[]);//有参赋值(index,a[])
		~SeqList(){
		}
		void Inset(int i,DataType x);//增 
		DataType Delete(int i);//删 
		DataType Change(int i,DataType x);//改值 
		DataType Get(int i);//按位查询 
		int Locate(DataType x);//按值查询 
		void Print();//打印 
	 private:
	 	int Length;
	 	DataType Data[MaxSize];
};
#endif

#SeqList.cpp文件

#include<iostream>
using namespace std;
#include"SeqList.h"
//赋值 
template <typename DataType> SeqList<DataType>:: SeqList(int L,DataType a[]){
	if(L>MaxSize)throw "上溢出"; 
	if(L<0||L>MaxSize)throw "位置异常";
	Length = L;
	for(int i=0;i<Length;i++){
		Data[i]=a[i];
	}
}
//增 
template <typename DataType> void SeqList<DataType>:: Inset(int i,DataType x){
	if(i<1||i>Length)throw "位置异常";
	for(int j=Length;j>i-1;j--){
		Data[j]=Data[j-1];
	} 
	Data[i-1]=x;
	Length++;
} 
//删 
template <typename DataType> DataType SeqList<DataType>::Delete(int i){
	if(i<1||i>Length)throw "位置异常";
	int x;
	x=Data[i-1];
	for(int j=i-1;j<Length-1;j++){
		Data[j]=Data[j+1];
	}
	Length--;
	return x;
}
//按位查询 
template <typename DataType> DataType SeqList<DataType>::Get(int i){
	if(i<1||i>Length)throw "位置异常";
	return Data[i-1];
}
//按值查询 
template <typename DataType> int SeqList<DataType>::Locate(DataType x){
	for(int i=0;i<Length;i++){
		if(Data[i]==x)
		return i+1;
	} 
	return 0;
}
//打印
template <typename DataType> void SeqList<DataType>::Print(){
	for(int i=0;i<Length;i++){
		cout<<Data[i]<<" ";
	}
	cout<<endl;
}
//改值 
template <typename DataType> DataType SeqList<DataType>::Change(int i,DataType x){
	if(i<1||i>Length)throw "位置异常";
	int s;
	s=Data[i-1];
	Data[i-1]=x;
	return s;
} 

#SeqList_Main.cpp文件

#include<iostream>
using namespace std;
#include"SeqList.cpp"
/*******SeqList(){Length =0;//无参赋值 
**		}
**		SeqList(int L,DataType a[]);//有参赋值(index,a[])
**		~SeqList(){
**		}
**		void Inset(int i,DataType x);//增 
**		DataType Delete(int i);//删 
**		DataType Change(int i,DataType x);//改值 
**		DataType Get(int i);//按位查询 
**		int Locate(DataType x);//按值查询 
**		void Print();//打印 
********/
int main(){
	int r[5]={1,2,3,4,5};
	try{
		SeqList<int> L(5,r);
		cout<<"打印"<<endl; 
		L.Print(); 	
		cout<<"插入第1个:6"<<endl; 
		L.Inset(1,6);
		L.Print();
		cout<<"删除第1个:6"<<endl; 
		int x=L.Delete(1);
		L.Print();
		cout<<"改第1个为10"<<endl;
		int y=L.Change(1,10);
		L.Print();
		cout<<"按位查询第一个"<<endl; 
		cout<<L.Get(1)<<endl;
		cout<<"按值查询10在第几个元素"<<endl; 
		cout<<L.Locate(10)<<endl;
	}
	catch(char *p){
		cout<<p<<endl;
	}
	return 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、付费专栏及课程。

余额充值