我想使用数组在C语言中实现简单的链接列表。我已经尝试过这么多网站,但无法学习它,任何人都可以请帮忙。
先谢谢
答案 0 :(得分:0)
您可以使用结构数组
实现链接列表struct linknode
{
int data;
int next;
}
然后抓住一个数组,
struct linknode list[50];
然后你的头指针有第一个元素的索引;为了exapmle
int head=0;
然后为每个节点,例如在列表使用的第一个位置添加一个节点,
list[i].data=data;
list[i].next=head;
head=i;
这里下一个字段将包含下一个节点的数组索引。最后一个节点可以有,
list[last].next=-1;
您需要通过使用-1或使用free list
来管理空节点
这个概念可以让你想到使用数组实现链表,你可以用与动态分配节点的链表相似的方式进行编码。
答案 1 :(得分:0)
想象一下,数组中的每个元素都是一个节点(例如,每个元素都是一个带有值和下一个节点指针的struct
,甚至是&#34;下一个索引&# 34;) - 在这方面, 与<{1}}的更传统的链接列表实现根本不同。
现在,假设有两个链接列表。一个是实际&#34;数据&#34;的列表,另一个是仅包含可用/免费/未使用的节点的链表。设置这个&#34;免费节点的链接列表&#34;在开始时(通常,每个节点/元素&#34;指向&#34;数组中的下一个元素)。
然后,将节点新节点添加到&#34;数据&#34;链表,从&#34;空闲节点中取出头节点&#34; list(当然删除它)并使用它,就像在任何其他链表实现中一样。与更传统的malloc方法的不同之处在于&#34;新节点&#34; function从数组中返回一个空闲节点/元素;这可以通过一个&#34;免费节点轻松处理。列表。