C++数据结构静态链表(含完整代码)

本文介绍了静态链表的概念,它使用一维数组来模拟指针,并详细阐述了静态链表的插入操作,包括在内存中分配空间、设置游标以及插入节点的过程。还提供了完整的C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态链表

静态链表是利用一维数组代替指针
在内存中也需要分配一整块连续的内存空间
每个元素都由两个数据域组成
data存储节点中的数据,cur存储后继节点所属的数组元素
cur也称为游标,用来模拟指针。
下标为0 的数组元素可以看做是链表的头结点,其cur域的值用于只是链表第一个数据节点对应的数组下标。
静态链表的插入操作
1.找到一个空闲位置代表新插入的节点,在其中存入数据元素。
2.从头节点开始,找到待插入位置的前一个节点。
3.设置新插入节点的cur值以指向前一个节点所指向的节点,设置前一个节点所指向的节点的cur指向为这个新插入的节点。
4.如果新插入的节点是最后一个节点,要设置其cur标记为末尾。

实现代码

#include <iostream>
using namespace std;
#define MaxSize 201//静态链表的尺寸,可用数组下标为0-200
enum NODEUSE//枚举节点使用情况
{
   
	//这些枚举值都取负值
	e_NOUSE = -1,//未使用
	e_LAST = -2//最后一个节点
};
//静态链表中每个节点的定义
template <typename T>//T代表数据元素的类型
struct Node
{
   
	T data;//元素数据域
	int cur;//游标
};
//静态链表的定义
template <typename T>
class StaticLinkList
{
   
public:
	StaticLinkList();//构造函数
	~StaticLinkList();//析构函数
	int FindAnIdlePos();//找到一个空闲位置用于存放数据
	bool ListInsert(int i, const T& e);//在第i个位置插入指定元素e
	bool ListDelete(int i);//删除第i个位置元素
	bool GetElem(const T& e);//获得第i个位置的元素值
	int LocateElem(const T& e);//获得元素e第一次出现的位置
	void DisplayList();//扫描静态链表
	int ListLength();//获取静态链表的长度
	bool Empty();//判断静态链表是否为空
private:
	Node<T> m_data[MaxSize];//保存节点数据的数组
	int m_length;//保存数组长度
};
template <typename T>
StaticLinkList<T>::StaticLinkList()//通过构造函数对链表初始化
{
   
	for (int i = 1; i < MaxSize; i++)//从下标1开始的节点用于保存实际的数据,这些节点的cur有必要设置值,而头结点其实不用赋值。
	{
   
		m_data[i].cur = e_NOUSE;//标记这些节点都没有使用
	}
	m_length = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值