#include "SeqList.h"
#include<iostream>
using namespace std;
template<class T, int MaxSize>
SeqList<T,MaxSize>::SeqList()
{
length = 0;
}
template<class T, int MaxSize>
SeqList<T, MaxSize>::SeqList(T a[], int n)
{
if (n<0 || n>MaxSize)
{
cout << "顺序表初始化溢出" << endl;
exit(1);
}
for (int i = 0; n > i; i++)
list[i] = a[i];
length = n;
}
template<class T, int MaxSize>
int SeqList<T, MaxSize>::ListLength()
{
return length;
}
template<class T, int MaxSize>
void SeqList<T, MaxSize>::PrintList()
{
for (int i = 0; length > i; i++)
cout << " " << list[i];
cout << endl;
}
template<class T, int MaxSize>
void SeqList<T, MaxSize>::Insert(int pos,T data)
{
if (length >= MaxSize)
{
cout << "数据溢出" << endl;
exit(1);
}
if (pos<1 || pos>length + 1)
{
cout << "插入元素位置错误" << endl;
exit(1);
}
for (int i = length - 1; i >= pos - 1; i--)
list[i + 1] = list[i];
list[pos - 1] = data;
length++;
}
template<class T, int MaxSize>
T SeqList<T, MaxSize>::Delete(int pos)
{
if (length == 0)
{
cout << "数据溢出" << endl;
exit(1);
}
if (pos<1 || pos>length)
{
cout << "删除元素位置错误" << endl;
exit(1);
}
T x = list[pos - 1];
for (int i = pos; length > i; i++)
list[i - 1] = list[i];
length--;
return x;
}
template<class T, int MaxSize>
T SeqList<T, MaxSize>::Find_Pos(int pos)
{
if (pos<1 || pos>length)
{
cout << "查询位置溢出" << endl;
exit(1);
}
return list[pos - 1];
}
template<class T, int MaxSize>
int SeqList<T, MaxSize>::Find_Data(T data)
{
for (int i = 0; length > i; i++)
if (list[i] == data)
return i + 1;
return -1;
}