1、链表是存储空间动态管理的链式存储结构。链表中每个存储结点不仅包含元素本身的信息,即数据域;而且包含表示元素之间逻辑关系的信息。 2、在单链表中增加一个头结点的优点: (1) 单链表中首结点的插入和删除操作与其它结点一致,无须进行特殊处理。 (2) 无论单链表是否为空都有一个头结点,因此统一了空表 ...
分类:
其他好文 时间:
2018-10-27 14:59:04
阅读次数:
556
今天在写线性表的链式存储过程中,遇到了一个比较奇葩的问题,就是同一段程序,用for循环可以顺利执行,然而用while循环就提醒我“结点空间申请失败!!!”,考虑了一上午都没有头绪。记录下这个问题,日后继续探究。 下面是用for循环实现单链表的创建 下面是用while循环实现单链表的创建: ...
分类:
其他好文 时间:
2018-10-27 13:20:24
阅读次数:
228
程序构思: 单链表的建立 (1) 先建立头结点head,将头结点的指针域置为空。 (2) 新建一个指向头结点的指针m,即Node m = head;(首端插入方式不需要该步骤)。 (3) 新建一个结点p,把此新结点链接到单链表的尾端(p next设为空)或者始端。 1??首端插入方式 ? ①p ne ...
分类:
其他好文 时间:
2018-10-23 14:31:07
阅读次数:
149
题目:给定链表的头结点head,实现删除链表的中间节点的函数 例如: 不删除任何节点; 1 --> 2,删除节点1; 1 --> 2 --> 3,删除节点2; 1 --> 2 --> 3 --> 4,删除节点2; 1 --> 2 --> 3 --> 4 --> 5,删除节点3; 进阶: 给定链表的头 ...
分类:
其他好文 时间:
2018-10-22 14:38:08
阅读次数:
165
1. 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1 2 3 4 5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1 2 3 5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 2. 思路 定义两个指针 p ...
分类:
其他好文 时间:
2018-10-21 00:59:14
阅读次数:
176
一、题目 1、审题 2、分析 将链表中值为 val 的节点去除。 二、解答 1、思路: 方法一、 创建一个头结点,将后边的值为 val 的节点一一删除。 优化: 采用 pre、cur 指针,使代码更简洁 方法二、 采用递归 ...
分类:
其他好文 时间:
2018-10-19 23:40:44
阅读次数:
171
正文 本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6 ...
分类:
编程语言 时间:
2018-10-14 23:09:18
阅读次数:
201
结论 LinkList *L和 LinkList *&L 引用L是为了改变L的值,而L指向的是链表的头结点的地址,即要改变头结点的地址,但是一般改链都是对头结点之后的结点进行操作,所以头结点的地址一直没变,故去掉&后函数依旧可以正常执行。之所以会加&,是以防没有链表是没有头结点的那种情况,因为可能会 ...
分类:
其他好文 时间:
2018-10-14 00:32:52
阅读次数:
234
1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注 ...
分类:
其他好文 时间:
2018-10-13 22:53:19
阅读次数:
172
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 public class Solution { public ListNode deleteDuplication( ...
分类:
其他好文 时间:
2018-10-11 19:03:14
阅读次数:
128