数组实现链表功能-----模拟链表(c语言)

普通的单链表往往在创建时会有些复杂,此时我们可以利用数组来实现链表的功能。链表的每一个节点内都存有两部分数据,一个是数据,一个则是地址。于是我们就可以利用新的数组来存储地址。此时要注意一点,新数组所存的地址虽说是地址,但其实是数组的下标,原来对链表的遍历现在转化为对数组的遍历,我们可以创建两个数组,data数组和right数组。
在这里插入图片描述
在这里插入图片描述
现在我们创建两个数组,位置所表示的都是他们分别的下标。其中data数组里存的就是我们所需的数据,而right数组里存的都是data数组对应位置右边数据的下标。例如right【1】= 2表示的就是data数组里第一个元素右边数据的下标也就是2.right【9】= 0表示data数组9号元素后面没有元素。
现在我们需要在8前面插入6.做法是在data数组的最后一个10号位存6,再将right数组内3号位数字改为10,10号位改为4.
在这里插入图片描述
在这里插入图片描述
right数组在这里的作用其实相当于链表里**“指向“**这一步,现在此数组的意义为data【1】号元素的右边是data【2】,data【2】号元素的右边是data【3】,data【3】号元素的后面是data【10】以此类推。
写成代码是这样的

#include <stdio.h>
#include <stdlib.h>

int main()
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值