1.seqList.h文件
#pragma once
#include<iostream>
#define MaxSize 100 //顺序表的最大容量
template<typename DataType>
class SeqList
{
public:
SeqList(); //无参构造
SeqList(DataType a[], int n); //有参构造
~SeqList(); //析构函数
int seqListlength(); //求顺序表的长度
bool seqListEmpty(); //判断顺序表是否为空
DataType getValue(int i); //获取链表在i位置的值
int LocateIndex(DataType data); //获取顺序表中值为data的索引值
void insert(int pos, DataType data); //插入元素
DataType deleteSeqList(int pos); //删除元素
void printSeqList(); //遍历顺序表
private:
int length;
DataType seqList[MaxSize];
};
2.seqList.cpp文件
#include<iostream>
#include"seqList.h"
using namespace std;
//顺序表相当于数组
template<typename DataType>
SeqList<DataType>::SeqList()
{
length = 0;
}
template<typename DataType>
SeqList<DataType>::SeqList(DataType a[], int n)
{
if (n > MaxSize)
{
throw "参数不合法";
}
for (int i = 0; i < n; i++)
{
seqList[i] = a[i];
}
length = n;
}
//析构函数
template<typename DataType>
SeqList<DataType>::~SeqList()
{
}
//求顺序表的长度
template<typename DataType>
int SeqList<DataType>::seqListlength()
{
return length;
}
//判断顺序表是否为空
template<typename DataType>
bool SeqList<DataType>::seqListEmpty()
{
if (length == 0)
{
return true;
}
return false;
}
//根据值获取索引
template<typename DataType>
int SeqList<DataType>::LocateIndex(DataType data)
{
for (int i = 0; i < length; i++)
{
if (seqList[i] == data)
{
return i + 1;
}
}
return -1;
}
//根据索引值来返回值
template<typename DataType>
DataType SeqList<DataType>::getValue(int pos)
{
if (pos > length)
{
throw "参数不合理";
}
return seqList[pos - 1];
}
//插入元素
template<typename DataType>
void SeqList<DataType>::insert(int pos, DataType data)
{
if (pos > length)
{
throw "参数不合理";
}
for (int i = length; i >= pos; i--)
{
seqList[i] = seqList[i - 1];
}
seqList[pos - 1] = data;
length++;
}
//删除元素
template<typename DataType>
DataType SeqList<DataType>::deleteSeqList(int pos)
{
if (pos > length)
{
throw "参数不合理";
}
DataType data = seqList[pos - 1];
for (int i = pos - 1; i < length; i++)
{
seqList[i] = seqList[i + 1];
}
length--;
return data;
}
//遍历顺序表
template<typename DataType>
void SeqList<DataType>::printSeqList()
{
for (int i = 0; i < length; i++)
{
cout << seqList[i] << " ";
}
cout << endl;
}
3.顺序表.cpp文件
#include<iostream>
#include"seqList.h"
#include"seqList.cpp"
using namespace std;
void test01()
{
int r[5] = { 1,2,3,4,5 };
SeqList<int> seqList = { r, 5 };
cout << "当前线性表中的数据为:" << endl;
seqList.printSeqList();
try
{
seqList.insert(2, 8);
cout << "执行插入操作后的数据为:" << endl;
seqList.printSeqList();
}
catch (char* str)
{
cout << str << endl;
}
cout << "当前的顺序表的长度为:" << seqList.seqListlength() << endl;
if (seqList.seqListEmpty())
{
cout << "当前链表为空" << endl;
}
else
{
cout << "当前链表不为空" << endl;
}
try
{
int i = 0;
cout << "请输入待删除元素的位置:" << endl;
cin >> i;
int data = seqList.deleteSeqList(i);
cout << "位置" << i << "删除元素的值为:" << data << endl;
}
catch (char* str)
{
cout << str << endl;
}
//获取位置的元素值
seqList.printSeqList();
int x = seqList.getValue(2);
cout << "位置2的元素值为:" << x << endl;
//获取某位置的元素值
int i = seqList.LocateIndex(1);
cout << "值为1的元素索引值为:" << i << endl;
}
int main()
{
test01();
system("pause");
return 0;
}