介绍

首先,用游标实现的链表还是链表,就像无论是链表还是数组都是对表这一抽象概念的具体实现。
在这里,多级抽象的概念在我们设计工程代码和封装代码时非常有用。
接着,链表有两个重要的特点:

  • 数据存储在结构体总,每一个结构体包含有数据以及指向下一个结构体的指针。
  • 每一个结构体通过malloc而从系统全局内存得到,并通过调用free而被释放。

    具体实现

    链表的游标实现.cpp

    1. 一些问题

    代码实现的并不严谨,仅仅能在恰当的情况完成功能。

    2. 思考

    insert 函数

    比如书中的 insert 函数,参数有L链表头,X插入的数据,P插入的位置,而L是未被使用的,这并不符合我们通过L表头来找到我们将要插入的位置的习惯,而是直接给出了“内存地址”P。所以我们可以根据实际需求设计更加方便的函数功能封装。

    应当注意到

    代码中以下标0作为表头的链表是未被使用的空间(内存已经分配,但是链表未使用)。叫做freelist
    free和 alloc 作为两个相反的操作,其对结构体单元操作的顺序类似于栈,请思考过程。