如何用C++实现顺序表,代码怎样写?
导读:这篇文章给大家分享的是用C++实现顺序表的示例,有一定的参考借鉴价值,文中的示例代码介绍得很详细,感兴趣的朋友接下来就跟随小编一起了解看看吧。 代码 1.SeqList.h #ifndef SEQLIST_H #define SEQLI...
这篇文章给大家分享的是用C++实现顺序表的示例,有一定的参考借鉴价值,文中的示例代码介绍得很详细,感兴趣的朋友接下来就跟随小编一起了解看看吧。
代码
1.SeqList.h
#ifndef SEQLIST_H
#define SEQLIST_H
#includeiostream>
using namespace std;
templateclass T,int MAXSIZE>
class SeqList
{
T data[MAXSIZE];
int length;
public:
SeqList();
SeqList(T a[],int n);
~SeqList();
int ListLength();
T Get(int pos);
int Locate(T item);
void SeqPrint();
void Insert(int i, T item);
T Delete(int i);
}
;
#endif
2.SeqList.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include"SeqList.h"
templateclass T, int MAXSIZE>
SeqListT,MAXSIZE>
::SeqList()
{
length = 0;
}
templateclass T, int MAXSIZE>
SeqListT, MAXSIZE>
::SeqList(T a[], int n)
{
if (n MAXSIZE)
{
length = n;
for (int i = 0;
i n;
i++)
{
data[i] = a[i];
}
}
else
{
cerr "您的数据已经超过范围,系统无法继续工作" endl;
exit(-1);
}
}
templateclass T, int MAXSIZE>
SeqListT, MAXSIZE>
::~SeqList()
{
}
templateclass T, int MAXSIZE>
int SeqListT, MAXSIZE>
::ListLength()
{
return length;
}
templateclass T, int MAXSIZE>
T SeqListT, MAXSIZE>
::Get(int pos)
{
if (pos >
length || pos 0)
{
cerr "您要查找的位置不存在,系统无法继续为您服务" endl;
exit(-1);
}
else
{
return data[pos - 1];
}
}
templateclass T, int MAXSIZE>
int SeqListT, MAXSIZE>
::Locate(T item)
{
for (int i = 0;
i length;
i++)
{
if (data[i] == item)
return i + 1;
}
return -1;
}
templateclass T, int MAXSIZE>
void SeqListT, MAXSIZE>
::SeqPrint()
{
for (int i = 0;
i length;
i++)
{
cout data[i] " ";
}
cout endl;
}
templateclass T, int MAXSIZE>
void SeqListT, MAXSIZE>
::Insert(int i, T item)
{
if (length MAXSIZE)
{
for (int j = length - 1;
j>
=i - 1;
j--)
{
data[j + 1] = data[j];
}
data[i - 1] = item;
length++;
}
else
{
cerr "抱歉,当前已经达到系统最大的储存,无法为您插入" endl;
exit(-1);
}
}
templateclass T, int MAXSIZE>
T SeqListT, MAXSIZE>
::Delete(int i)
{
if (length == 0)
{
cerr "当前无可删除元素" endl;
exit(-1);
}
if (i1 || i>
length)
{
cerr "该位置非法" endl;
exit(-1);
}
T x = data[i - 1];
for (int j = i;
j length;
j++)
{
data[j - 1] = data[j];
}
length--;
return x;
}
3.test.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include"SeqList.cpp"
#includeiostream>
using namespace std;
void menu()
{
cout "|------------------------------------|" endl;
cout "|----------- 欢迎来到顺序表 ---------|" endl;
cout "|---------------1.插入---------------|" endl;
cout "|---------------2.删除---------------|" endl;
cout "|---------------3.求长---------------|" endl;
cout "|---------------4.取值---------------|" endl;
cout "|---------------5.定位---------------|" endl;
cout "|---------------6.打印---------------|" endl;
cout "|---------------0.退出---------------|" endl;
cout "|------------------------------------|" endl;
}
int main()
{
int *a;
int n;
cout "请输入您要构造的顺序表的长度" endl;
cin >
>
n;
a = new int[n];
cout "请输入该顺序表中的每一个元素" endl;
for (int i = 0;
i n;
i++)
{
cin >
>
a[i];
}
SeqListint, 20>
seq(a, n);
cout "现在开始我们的程序之旅" endl;
int input=0;
do
{
menu();
cout "输入您要进行的操作的编号" endl;
cin >
>
input;
switch (input)
{
case 1:
cout "请输入您要插入的位置和数值" endl;
int pos;
int value;
cin >
>
pos;
cin >
>
value;
seq.Insert(pos,value);
break;
case 2:
cout "请输入您要删除的位置" endl;
int pos1;
cin >
>
pos1;
cout "您删除的元素的值为:";
cout seq.Delete(pos1) endl;
break;
case 3:
cout "您的顺序表当前的长度为:" seq.ListLength() endl;
break;
case 4:
cout "请输入您要查找的位置" endl;
int pos2;
cin >
>
pos2;
cout "您查找的元素的值为:";
cout seq.Get(pos2) endl;
;
break;
case 5:
cout "请输入您要查找的元素" endl;
int item;
cin >
>
item;
cout "您查找的元素的位置为:";
cout seq.Locate(item) endl;
;
break;
case 6:
cout "当前顺序表如下:" endl;
seq.SeqPrint();
break;
case 0:
cout "程序退出,感谢使用" endl;
exit(-1);
break;
default :
cout "您的输入有误,请重新选择" endl;
}
}
while (input);
return 0;
}
总结
以上就是用C++实现顺序表的示例,上述示例具有一定的参考价值,有需要的朋友可以了解看看,希望对大家学习C++的使用有帮助,想要了解更多可以继续浏览网络其他相关的文章。
文本转载自PHP中文网
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用C++实现顺序表,代码怎样写?
本文地址: https://pptw.com/jishu/655051.html
