C++线性表的模板实现

C++线性表的模板实现

#pragma once
//顺序表的实现
#include 

using namespace std;

const int MaxSize = 100;				
template				
class SeqList
{
public:
​	SeqList(){ length = 0; }			
​	SeqList(DataType a[], int n);		
​	~SeqList();						
​	int Length(){ return length };		
​	DataType Get(int i);				
​	int Local(DataType x);				
​	void Insert(int i, DataType x);		
​	DataType Delete(int i);				
​	void PrintList();					
private:
​	DataType data[MaxSize];				
​	int length;							
};

template
SeqList::SeqList(DataType a[], int n)
{
​	if (n > MaxSize)
​	{
​		throw"参数非法";
​	}
​	for (int i = 0; i < n; i++)
​	{
​		data[i] = a[i];
​	}
​	length = n;
}

template
SeqList::~SeqList()
{
}

template
DataType SeqList::Get(int i)
{
​	if (i<1 && i>length)
​	{
​		throw"查找位置非法";
​	}
​	else
​	{
​		return data[i - 1];
​	}
}

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

template
void SeqList::Insert(int i, DataType x)
{
​	if (length > MaxSize)
​	{
​		throw"上溢";
​	}
​	if (i < 1 && i > length + 1; i++)
​	{
​		throw"位置";
​	}
​	for (int j = length; j >= i; j--)
​	{
​		data[j] = data[j - 1];
​	}
​	data[i - 1] = x;
​	length++;
}

template
DataType SeqList::Delete(int i)
{
​	if (length == 0)
​	{
​		throw"下溢";
​	}
​	if (i<1 && i>length)
​	{
​		throw"位置";
​	}
​	x = data[i - 1];
​	for (int j = i; j < length; j++)
​	{
​		data[j - 1] = data[j];
​	}
​	length--;
​	return x;
}

template
void SeqList::PrintList()
{
​	for (int i = 0; i < length; i++)
​	{
​		cout << data[i];
​	}
​	cout << endl;
}

你可能感兴趣的:(数据结构)