数据结构系列:顺序表[C++]

首先是头文件 里面写好 方法跟属性

class List
{
public://限定要写的操作
	List(int size);//构造
	~List();//析构


	void ClearList();//将引用全部清空,length为0就可以了
	bool ListEmpty();
	int  ListLength();

	bool GetElem(int i, int* e);
	int LocateElem(int* e);

	bool PriorElem(int* currentElem, int* preElem);//寻找前驱元素
	bool NextElem(int* currentElem, int* nextElem);//后驱元素

	void ListTraverse();

	//插入跟删除真的很不方便

	bool ListInsert(int i,int* e);
	bool ListDelete(int i,int* e);
	
private://限定数据成员
	//指向内存
	int* m_pList;//指向一块内存 来做线性表
	int  m_iSize;//总的大小
	int  m_iLength;//当前的长度
};

上面这里定义了一个 int * m_pList来做指针寻找内存(c++要重学一次)
构造函数析构函数
然后其实 new int[] 里面 用哪个size差别都不大。

List::List(int size)
{
	m_iSize = size;//大小指定好
	m_pList = new int[m_iSize];//指定好内存
	m_iLength = 0;
}
List::~List()
{//释放内存
	delete[] m_pList;
	m_pList = NULL;

}

最最关键的 增加 删除
//这里就跟我c#中的顺序队列很像

增加的时候首先判断 i(也就是增加的位置)是否符合规则
然后符合规则**【length-1】= 这个括号刚好就是最好一个元素的下标**
一直递减 直到让出合适的位置给 新的元素

bool List::ListInsert(int i,int * e)
{
	if (i < 0 || i>m_iLength)//当不符合规则
	{
		return false;
	}
		for (int k = m_iLength - 1; k >= i; k--)//重点
		{
			m_pList[k + 1] = m_pList[k];//全部都进行移动
		}
		m_pList[i] = *e;
		m_iLength++;
		return true;//顺序不能弄错 一旦收到true 循环就结束了
}
bool List::ListDelete(int i, int * e)
{
	if (i<0|| i >= m_iLength)//为什么不可以
	{
		return false;
	}
	*e = m_pList[i];
	for (int k = 0; k < m_iLength; k++)
	{
		m_pList[k - 1] = m_pList[k];
	}
	m_iLength--;
	return true;
}

获得 想要的元素 想要元素所在的位置

bool List::GetElem(int i, int * e)
{
	if (i<0||i>=m_iSize)
	{
		return false;
	}

	*e = m_pList[i];//
	return true;
}

int List::LocateElem(int * e)
{
	for (int i = 0; i < m_iLength; i++)
	{
		if (m_pList[i]==*e)
		{
			return i;//返回位置
		}
	}
	return -1;
}

遍历函数

void List::ListTraverse()
{
	for (int i = 0; i < m_iLength; i++)
	{
		cout << m_pList[i] << endl;
	}
}

在这里插入图片描述
还是得用c#再完成一次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值