头插法与尾插法实现:单链表创建、逆置与数据插入

5星 · 超过95%的资源 需积分: 50 5 下载量 198 浏览量 更新于2024-09-10 收藏 13KB DOCX 举报
本资源主要介绍了单链表的相关操作,包括单链表的创建、头插法、尾插法以及就地逆置。单链表是一种常见的数据结构,由节点(Lnode)组成,每个节点包含一个整型数据(date)和一个指向下一个节点的指针(next)。以下是对这些操作的详细说明: 1. **头插法 (Head Insertion)**: - `tou(LinkList& L)` 函数用于在链表头部插入节点。首先动态分配一个头节点,并将其next指针设置为NULL。接着,根据用户输入的数据个数,循环生成新节点,输入节点值,然后将新节点的next指针指向当前头节点的next,再将新节点设为头节点的next。这样每次插入都在链表的开始位置。 2. **显示链表 (Show List)**: - `show(LinkList L)` 函数用于遍历并打印链表中的所有节点数据。通过遍历`L->next`直到NULL,依次输出每个节点的date字段。 3. **尾插法 (Tail Insertion)**: - `wei(LinkList& L)` 函数实现尾部插入节点。首先创建一个临时指针`t`,并让它同时指向头节点和尾节点。根据用户输入的数据个数,同样循环生成新节点,输入节点值,然后将新节点的next指针设为`t->next`,最后更新`t->next`为NULL,完成尾部插入。 4. **就地逆置 (In-place Reversal)**: - 分为两种方法: - `nizhi1(Link& l)` 采用迭代方式,遍历链表,同时维护两个指针 `h` 和 `t`,分别指向当前节点和前一个节点。当遍历到末尾时,将`p`设为`t`,然后从头开始再次遍历,打印节点值。 - `nizhi2(LinkList& L)` 的实现方式是另一种迭代方法,但这里缺少了代码,可能是使用`malloc`动态分配了一个额外的指针`s`来辅助操作。根据描述,它也应该会创建一个新的尾节点,并通过交换节点指针实现链表的逆置。 通过这些函数,您可以创建、插入节点、查看链表内容以及对链表进行逆置操作。这些是单链表基础操作的示例,适用于许多数据结构和算法的应用中。