数据结构复习13 静态链表

本文探讨了静态链表的存储方式,它采用链式存储结构,利用数组作为存储媒介。静态链表的空间分为已使用和未使用两部分,通过avil指针管理。在表尾增加和表中插入时,需要通过avil找到空闲内存,并更新free空间。删除操作则类似普通链表,但更新free空间头结点。

静态链表

  • 存储的方式是链式存储

  • 存储的媒介是数组

  • 在这里插入图片描述空间分为两部分,一部分未使用以avil作为指针控制,一部分使用过以头结点或附加头结点控制

  • 表尾增加和表中插入在找到对应位置要通过avil来分配新数据元素内存,先找到对应的avil处所指向的内存,将avil的下一块内存来作为新的free空间控制节点,先执行p=avil后执行avil=elem[avil].link;,分配新的数据元素内存elem[p]=new node(x)elem[p].link=elem[i].linkelem[i].link=p

  • 表中删除找到对应位置的前一位置后,模仿普通链表方式执行node.next=node.next.next,这里用了elem[i].link=elem[elem[i].link].link,然后将i所指向的位置作为新的free空间头结点,操作是elem[i].link=avil;avil=i;

const in maxSize=100;
template<class T>
struct StaticLinkNode{
   
   
	T data;
	int link;
};

class StaticLinkList{
   
   
	protected:
	StaticLinkNode<T> elem*;
	int avil;//address for init memory
	public:
	void InitList();
	int Length();
	int Search(const T &x);
	int Locate(int i);
	bool Append(T x);
	bool Insert(int i,T x);
	bool Remove(int i,T &x);
	bool IsEmpty()const;
};

void StaticLinkList<T>::<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值