c++实现顺序表

 
 
#include <iostream>
using namespace std;
#define MAX_SIZE 20
#define OK 1
#define ERROR 0
typedef int Status;
typedef int ElemType;   // 元素类型可以改变,假定这里为int
class sqList
{
private:
	ElemType data[MAX_SIZE];
	int length;
public:
	// 获取、插入、删除三个基本操作
	ElemType getElem(ElemType &e, int pos);
	Status insertElem(ElemType e, int pos);
	Status deleteElem(ElemType &e, int pos);
	int getLength(){ return length; }
	void initList(); // 初始化列表,默认设置前五个元素
};
ElemType sqList::getElem(ElemType &e,int pos)
{
	if (pos > length||pos<1 || pos>length)   // 顺序表为空或pos不合法
		return ERROR;
	e = data[pos - 1];
	return OK;  
}
Status sqList::insertElem(ElemType e, int pos)
{
	if (length == MAX_SIZE - 1)   // 表中元素已满
		return ERROR;
	if (pos < 1 || pos>length + 1)   // pos位置不合法
		return ERROR;
	if (pos <= length)   // 当插入位置不在表位
	{
		for (int index = length - 1; index >= pos - 1; index--)
		{
			data[index + 1] = data[index];
		}
	}
	data[pos - 1] = e;  // 将元素插入
	length++;
	return OK;
}
Status sqList::deleteElem(ElemType &e, int pos)
{
	if (length == 0)  // 表中无元素
		return ERROR;
	if (pos<1 || pos>length)  // pos不合法
		return ERROR;
	e = data[pos - 1];
	if (pos < length)   // pos不在表尾
	{
		for (int index = pos - 1; index <= length - 1; index++)
		{
			data[index] = data[index+1];
		}
	}
	length--;
	return  OK;
}
void sqList::initList()
{
	length = 5;
	for (int i = 0; i < length; i++)
	{
		data[i] = i + 1;
	}
	
}
int main()
{
	sqList list;
	list.initList();
	cout << "初始化成功" << endl;
	ElemType e;
	for (int i = 0; i < list.getLength(); i++)
	{
		list.getElem(e, i + 1);
		cout << "第" << i + 1 << "个元素为:" << e << endl;
	}
	cout << "请输入要删除的元素的位置:";
	int pos;
	cin >> pos;
	if (list.deleteElem(e, pos))
	{
		cout << "删除的元素为" << e << endl;
		cout << "插入后列表信息如下:" << endl;
		for (int i = 0; i < list.getLength(); i++)
		{
			list.getElem(e, i + 1);
			cout << "第" << i + 1 << "个元素为:" << e << endl;
		}
	}
	else
	{
		cout << "删除失败" << endl;
	}
	cout << "请输入要插入的元素和插入的位置:";
	cin >> e>>pos;
	list.insertElem(e, pos);
	cout << "插入后列表信息如下:" << endl;
	for (int i = 0; i < list.getLength(); i++)
	{
		list.getElem(e, i + 1);
		cout << "第" << i + 1 << "个元素为:" << e << endl;
	}
	
}


猜你喜欢

转载自blog.csdn.net/qq_37174526/article/details/78009751
今日推荐