用c++写一个顺序表简单实例:

要求: 1、构造空的顺序表

2、建立含有若干数据元素的顺序表并输出

3、输出表长

4、获取某个元素的值

5、将某个位置插入某个新值

6、删除某个位置上的元素并输出新的顺序表

#include <iostream>
using namespace std;

#define MAXSIZE 100
#define ERROR0 0

//定义一个顺序表
typedef struct
{
	int* elem;//elem的中文意思是"元素"
	int length;
}List;

/*这个实例会采用很多自定义函数,下面就是这个实例中涉及到的自定义函数*/

//创建顺序表
/*对顺序表进行初始化  (实质上是一个数组)
并对顺序表的长度进行初始化*/
void InitList(List& L)//创建顺序表
{
	L.elem = new int[MAXSIZE];
	L.length = 0;
}

//输入功能函数
/*这个函数需要两个参数,一个是顺序表的引用,另一个是要输入数据的个数*/
void ListInput(List& L, int n)
{
	int i = 0;
	for (i = 0; i < n; i++)
	{
		cout << "请输入第" << i + 1 << "个数据:" << endl;
		cin >> L.elem[i];
	}
	L.length = i;
}
/*在函数对数据输入完成后,进而对顺序表的长度进行赋值*/

//求顺序表的长度
/*这是返回类型为int型的函数,参数只需要顺序表类型的变量,这里不对顺序表进行修改,因此不设置为引用*/
int ListLength(List L)
{
	return L.length;
}

//求顺序表中第i个元素的值
/*返回类型为int型函数,第一个参数是顺序表类型变量
第二个参数是第i个元素的位置*/
int GetElem(List L, int i)
{
	return L.elem[i - 1];
}

/*在第i个元素【后边】插入数据
也就是,当i=2的时候,会插到第三个位置上
也就是,将元素插到了第i+1的位置上*/
void ListInsert(List& L, int i, int e)
{
	for (int j = L.length - 1; j >= i - 1; j--)
	{	
		L.elem[j + 1] = L.elem[j];
		L.length++;//表长增1	
	}
	L.elem[i] = e;//将新元素放到第i个位置之后
}

//删除第i个元素
void ListRmove(List& L, int i)
{
	for (int j = i - 1; j < L.length; j++)
	{
		L.elem[j] = L.elem[j + 1];
		L.length--;
	}
}

//输出顺序表中的所有元素
void ListOutput(List& L)
{
	cout << "顺序表为:" << endl;
	for (int i = 0; i < L.length; i++)
	{
		cout << L.elem[i] << " ";
		
	}
	cout << endl;
}

int main()
{
	//声明一个顺序表L
	List L;
	//创建一个空的顺序表
	InitList(L);
	//输入若干个数据
	cout << "设置顺序表的长度:";
	int len;
	cin >> len;
	ListInput(L, len);
	//输出顺序表a
	ListOutput(L);
	//输出表长
	cout << "顺序表的表长为:" << ListLength(L) << endl;
	cout << "你想获取表中第几个元素的值?";
	int which_num;
	cin >> which_num;
	//获取表中某个元素的值
	cout << "表中第"<<which_num<<"个元素的值是:" << GetElem(L, which_num) << endl;
	//插入元素
	int where1,where2, what;
	cout << "插入到哪一个位置?";
	cin >> where1;
	cout << "插入什么数据?";
	cin >> what;
	ListInsert(L, where1-1,what);
	//输出新的顺序表
	ListOutput(L);
	//删除元素
	cout << "删除哪一个位置上的元素?";
	cin >> where2;
	ListRmove(L, where2);
	//输出新的顺序表
	ListOutput(L);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_64744030/article/details/126862275