链表-游标实现(C语言版)

这篇博客探讨了在不使用指针的编程语言中如何实现链表,提出使用游标作为替代方案。通过一个全局结构体数组模拟数据结构,并通过管理一个名为CursorSpace的表来跟踪内存分配和释放。文中提供了CursorSpace的malloc和free函数实现,并附有完整的C语言代码示例,以帮助读者理解和实现链表操作。
摘要由CSDN通过智能技术生成

如果用C/C++写链表的话,用指针会比较方便,但很多语言都没有指针,那么怎么实现比较好呢?游标是个不错的选择。

在用指针实现的链表中,有这样两个特点:
1.数据存在一组结构体中,并且每个结构体都有指向下一个结构体的指针。
2.一个新的结构体可以通过malloc获取内存,也可以用free来释放内存。

游标法也得满足这两个条件。满足条件1比较简单,用一个全局的结构体数组就行了;满足条件2的话可以保留一个表,如图:
0表示表头,然后他们的初始关系是这样这样:

当执行malloc功能时,我们把表头指向的单元拿出来使用,然后把表头指向下一个空单元,执行free功能时,将目标单元回收就行了。
这个表取名叫CursorSpace,下面给出CursorSpace的malloc和free的代码:

static Position CursorAlloc(void)
{
    Position P;

    P = CursorSpace[0].Next;
    CursorSpace[0].Next = CursorSpace[P].Next;

    return P;
}

static void CursorFree(Position P)
{
    CursorSpace[ P ].Next = CursorSpace[ 0 ].Next;
    CursorSpace[ 0 ].Next = P;
}

将代码和图结合起来试一试,应该很容易就能理解了。

下面给出完整代码:
1.头文件:</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值