首页后端开发其他后端知识如何用C++实现顺序表,代码怎样写?

如何用C++实现顺序表,代码怎样写?

时间2024-03-28 16:12:03发布访客分类其他后端知识浏览498
导读:这篇文章给大家分享的是用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
微信小程序实现传值的方法有什么 C++中什么是引用,用法是什么?

游客 回复需填写必要信息