题目描述 输入一个链表,输出该链表中倒数第k个结点。 解法 pre 指针走 k-1 步。之后 cur 指针指向 phead,然后两个指针同时走,直至 pre 指针到达尾结点。 即cur与pre始终相距k-1。 当用一个指针遍历链表不能解决问题的时候,可以尝试用两个指针来遍历链表。可以让其中一个指针遍 ...
分类:
其他好文 时间:
2019-06-28 21:01:17
阅读次数:
85
一、双向链表 在上文《JS数据结构第二篇 链表》中描述的是单向链表。单向链表是指每个节点都存有指向下一个节点的地址,双向链表则是在单向链表的基础上,给每个节点增加一个指向上一个节点的地址。然后头结点的上一个节点,和尾结点的下一个节点都指向null。同时LinkedList类中再增加一个last内部属 ...
分类:
Web程序 时间:
2019-06-26 12:09:01
阅读次数:
130
循环队列 一、顺序存储 分析: 1、定义结构:数据Data[];头尾结点Front、Rear;容量MaxSize 2、创建:为队列结构和数据申请空间,数据通过结构中的指针访问;头尾指针归零 3、插入删除:判断空满;尾入头出 4、注意是循环队列,空满判断条件要取余 ...
分类:
其他好文 时间:
2019-05-04 00:25:11
阅读次数:
109
328. 奇偶链表 题意 奇数的链表结点插在偶数的链表结点前面; 解题思路 维护两条链表,分别记录下奇数和偶数的链表结点,最后将偶数链表的起始结点连接到奇数链表的末尾结点后面; 实现 ...
分类:
其他好文 时间:
2019-03-21 10:40:15
阅读次数:
163
// 面试题22:链表中倒数第k个结点 // 题目:输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯, // 本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点, // 从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是 // 值为4的... ...
分类:
其他好文 时间:
2019-03-06 23:07:58
阅读次数:
218
# 根节点作为入口, 队列先进先出。 出队的地方是根结点的下一个结点. 入口是尾结点 class Node(object): def __init__(self, value=None, next=None): self.value = value self.next = next def __st... ...
分类:
编程语言 时间:
2019-02-14 10:27:42
阅读次数:
127
1.删除重复值的结点 思路:利用hashmap中的contain判断是否相同,如果相同则删除。 注意:要考虑到多个重复值 2.删除倒数第k个结点 思路:利用两个指针,第一个指针p1不动,第二个指针向后移动k-1次,p2到位后,p1,p2同时向后移动至p2指向的结点是尾结点。这时候,p1指针指向的结点 ...
分类:
其他好文 时间:
2019-02-10 00:20:30
阅读次数:
177
如果两个链表相交,又都不存在环,那么从第一个相交点开始之后的结点都相同(构成了一个Y型)。因此,只要分别遍历这两个链表,找到末尾结点,如果末尾结点相同,即可确认相交。 如果要求这种情况的交点,由于相交部分全部都相同,所以彼此的长度差异存在于相交之前的部分。因此,只需要先得到两个链表的差d,然后将较长 ...
分类:
其他好文 时间:
2019-01-02 13:32:16
阅读次数:
3401
25 个人围成一个圈,从第1个人开始顺序报号,凡报号为3和3的倍数者退出圈子,找出最后留在圈子中的人原来的序号。 要求:用链表实现。报到3或3的倍数的结点删除; 提示:(1)需要将链表首尾相接形成环形; (2)删除时注意头、尾结点的特殊处理; (3)注意循环结束的条件; ...
分类:
其他好文 时间:
2019-01-01 12:34:33
阅读次数:
278
题目 输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个结点是值为4的结点。 解题思路 1.不可行的常规解法 为了得到倒数第k个结点,很自然 ...
分类:
其他好文 时间:
2018-12-25 23:35:50
阅读次数:
178