温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++如何实现数据结构的顺序表

发布时间:2021-11-16 17:13:58 来源:亿速云 阅读:157 作者:小新 栏目:开发技术

这篇文章给大家分享的是有关C++如何实现数据结构的顺序表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    代码

    1.SeqList.h

    #ifndef SEQLIST_H #define SEQLIST_H #include<iostream> using namespace std; template<class 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" 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 < MAXSIZE)	{	length = n;	for (int i = 0; i < n; i++)	{	data[i] = a[i];	}	}	else	{	cerr << "您的数据已经超过范围,系统无法继续工作" << endl;	exit(-1);	} } template<class T, int MAXSIZE> SeqList<T, MAXSIZE>::~SeqList() { } template<class T, int MAXSIZE> int SeqList<T, MAXSIZE>::ListLength() {	return length; } template<class T, int MAXSIZE> T SeqList<T, MAXSIZE>::Get(int pos) {	if (pos > length || pos < 0)	{	cerr << "您要查找的位置不存在,系统无法继续为您服务" << endl;	exit(-1);	}	else	{	return data[pos - 1];	} } template<class T, int MAXSIZE> int SeqList<T, MAXSIZE>::Locate(T item) {	for (int i = 0; i < length; i++)	{	if (data[i] == item)	return i + 1;	}	return -1; } template<class T, int MAXSIZE> void SeqList<T, MAXSIZE>::SeqPrint() {	for (int i = 0; i < length; i++)	{	cout << data[i] << "  ";	}	cout << endl; } template<class T, int MAXSIZE> void SeqList<T, 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);	} } template<class T, int MAXSIZE> T SeqList<T, MAXSIZE>::Delete(int i) {	if (length == 0)	{	cerr << "当前无可删除元素" << endl;	exit(-1);	}	if (i<1 || 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" #include<iostream> 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];	}	SeqList<int, 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++如何实现数据结构的顺序表”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    c++
    AI