"19. 删除链表的倒数第N个节点" 1A,开心~ 注意,题目有进阶要求,只允许扫链表1次, 很多链表题跟这个思路一样,在遍历链表的时候,维护一个距离与当前头指针为(n+1)的尾巴标记P即可,当扫到链表结尾的时候,此时P正好指向待删除节点的前一个节点 注意几个细节处理: 0:注意P的初始化 1:n ...
分类:
其他好文 时间:
2018-07-01 18:17:53
阅读次数:
218
理解下头结点1.头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度)。2.有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。3.首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。4.头 ...
分类:
其他好文 时间:
2018-06-27 11:26:20
阅读次数:
238
常用的链表/堆栈 都是先 生成一个头指针head 再用头指针 申请一个 头节点空间,然后 头节点 的Data 一般是不储存数据的 , { 当用 malloc函数分配内存后head就变为了名叫head的节点了。而不在是一个单独的指针了 } { 注意只要用malloc申请的空间 才能使 指针再 下次循环 ...
分类:
编程语言 时间:
2018-06-26 00:50:59
阅读次数:
188
面试18题: 题目:删除链表中的节点 题一:在O(1)时间内删除链表节点。给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。 解题思路:我们要删除节点i,先把i的下一个节点j的内容复制到i,然后把i的指针指向节点j的下一个节点。此时再删除节点j,其效果等同于把节点i删除了。 ...
分类:
其他好文 时间:
2018-06-18 19:55:48
阅读次数:
150
struct ListNode{ int m_nValue; ListNode* m_pNext; }; # 往该链表的末尾添加一个节点 往一个空链表中插入一个节点时,新插入的节点就是链表的头指针。由于此时会改动头指针,因此必须把pHead参数设为指向指针的指针,否则出了这个函数pHead仍然是一个... ...
分类:
其他好文 时间:
2018-06-16 12:07:33
阅读次数:
143
一、栈的链式存储结构,简称为链栈。思路就是把栈顶放在单链表的头部,通常对于链栈来说,是不需要头结点的。 二、链栈基本不存在栈满的情况,除非内存已经没有可以使用的空间。对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实就是top=NULL。 三、栈的链式存储结构的C语言代码实现: 四、栈的链式存 ...
分类:
其他好文 时间:
2018-06-14 18:17:04
阅读次数:
138
链表题: 如果直接做会比较难处理头指针问题,一个好的方法是构造一个假的指针,指向head,然后再进行处理,这样会简便很多。 ...
分类:
其他好文 时间:
2018-06-13 11:57:20
阅读次数:
136
这里介绍增加内存的方法来逆转。利用新内存,复制每个节点的数据,再将头指针的next指向新的头。如此循环遍历原链。 ...
分类:
其他好文 时间:
2018-06-09 20:33:31
阅读次数:
111
链表翻转,简单地理解,就是将链表的头部结点变为链表的尾部结点,与此同时将原链表的尾部结点变成头部结点。如下图所示: 图 1 链表翻转示意图 提示:H 为头指针,图示中的链表无头结点,头指针直接指向首元结点。 将链表进行翻转的方法有多种,本节给大家介绍两种实现方法。 方法一 实现链表翻转最直接的方法就 ...
分类:
其他好文 时间:
2018-05-23 11:56:51
阅读次数:
207
题目描述 以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。 以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前 给定 ...
分类:
其他好文 时间:
2018-05-22 18:25:34
阅读次数:
179