链表的结构简单,它由指针把若干个结点连接成链状结构。它是一种动态结构,因为在创建链表时无须知道链表长度。插入一个结点时只需要为新结点分配内存,然后调整指针的指向即可。如果链表的头指针会有更改,那么参数应该设为指向指针的指针,即ListNode **pHead。 优点:空间效率高,因为是每添加一个结点 ...
分类:
编程语言 时间:
2019-09-01 14:26:31
阅读次数:
69
1 题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 2 思路和方法 (1)链表为空,不必多说,return NULL; (2)如果恰恰是头结点与头结点的后一个重复了 ...
分类:
编程语言 时间:
2019-08-29 13:55:32
阅读次数:
112
一、两数相加: 由于是刷的第一题,先写下: 本题是两个链表相加,方法是生成一个新的链表(其实是一个节点不断指向下一个节点,这样依次连起来的)去存储这个两个的和。 首先生成一个新的链表h,h是头指针;然后再让指针t指向h。 新建私有方法,该方法的作用是返回链表的有效数据,并让链表指向后继节点。即p好p ...
分类:
其他好文 时间:
2019-08-29 12:04:51
阅读次数:
91
题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 A:当遍历到第一个值为重复的节点时,要有一个指针指向它的前一个节点 因为函数原型没有传二级指针进来,且头结点也有可能被删 ...
分类:
其他好文 时间:
2019-08-27 19:08:28
阅读次数:
95
"Leedcode 206" 链表逆序I 从头逆序 图解步骤 备份head.next(原下一节点),修改head.next指向新头,移动修改两链表的头指针(新指向新的节点(原头节点),原再指向下一节点[备份点]) 迭代法 递归法 "LeedCode 92" 链表逆序II 部分逆序 图解步骤 迭代法 ...
分类:
其他好文 时间:
2019-08-25 14:31:35
阅读次数:
102
/** * 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 * 例如, * 给出的链表为:1->2->3->4->5, n= 2.?? * 删除了链表的倒数第n个节点之后,链表变为1->2->3->5. * 备注: * 题目保证n一定是合法的 * 请尝试只用一步操作完成该功能 */ /**... ...
分类:
其他好文 时间:
2019-08-20 10:44:29
阅读次数:
46
题目:在O(1)时间删除链表节点 给定单向链表的一个头指针和节点指针,定义一个函数在O(1)时间删除该节点 ...
分类:
其他好文 时间:
2019-08-09 10:41:04
阅读次数:
91
链表是一个动态的存储空间,在开始前无需考虑空间大小的问题,优点是删除或添加时方便,省内存,缺点是查找引用困难。想象一下一个巨大的单链表从头指针查找元素的情境,瞬间就明白了。链表的主要应用有约瑟夫问题,以及各类易TLE/MLE题目上。 ...
分类:
其他好文 时间:
2019-08-08 21:02:01
阅读次数:
94
链表是一个常见的重要的数据结构。最简单的单向链表:链表有一个头指针变量head,它存放一个地址。该地址指向第一个元素。链表中每一个元素称为结点, 每一个结点都包括两部分:第一部分为用户实际用的数据,第二部分为下一个结点的地址。这种链表的数据结构,必须用结构体和指针才能实现。 ...
分类:
编程语言 时间:
2019-07-29 11:32:45
阅读次数:
110
一、单链表的初始化: 1、生成新结点作为头结点,用头指针L指向头结点 2、头结点的指针域置空 二、取值: 1、用指针p指向首元结点,用j做计数器初值赋为1 2、从首元结点开始依次顺着链域next向下访问,只要指向当前结点的指针p不为空(NULL),并且没有到达序号为i的结点,则循环执行以下操作: a ...
分类:
其他好文 时间:
2019-07-21 01:29:45
阅读次数:
270