输出单链表中倒数第k个结点(Java版)
来源:互联网 发布:分众传媒江南春 知乎 编辑:程序博客网 时间:2024/06/07 11:43
题目:输入带头结点的单链表L,输出该单链表中倒数第k个结点。单链表的倒数第0个结点为该单链表的尾指针。要求只能遍历一次单链表。
解题思路:
如果不要求只能遍历一次单链表,我们可以先遍历一次单链表,求出它的结点的总个数n(包括头结点),所以单链表的结点是从倒数第n-1个到倒数第0个,然后再遍历一次单链表,遍历时访问的第n-k-1个结点就是该单链表中倒数第k个结点。现在要求只能遍历一次单链表,可以设两个指针p和q,最开始时它们都指向头结点,然后p向后移动k位,最后p,q同时向后移动直到p为最后一个结点,那么此时q即为所求。
ADT定义:
//单链表的结点类class LNode{//为了简化访问单链表,结点中的数据项的访问权限都设为publicpublic int data;public LNode next;}
算法实现:
public class LinkListUtli {//求单链表倒数第k个结点,尾指针为倒数第0个结点public LNode reciprocalKNode(LNode L, int k) {if (k < 0) {System.out.println("k不可以为负数");return null;}if (L == null) {System.out.println("单链表为空");return null;}LNode p = L;LNode q = L;while (k > 0) {p = p.next;if (p == null) {System.out.println("单链表太短,不存在倒数第k个结点");return null;}}while (p.next != null) {p = p.next;q = q.next;}return p;}
1 0
- 输出单链表中倒数第k个结点(Java版)
- 输出单链表中倒数第k个结点
- 输出单链表中倒数第k个结点
- 输出单链表中倒数第k个结点
- 链表中倒数第k个结点(java版)
- 输出链表中倒数第k个结点
- 输出链表时倒数第K个结点
- 输出链表中倒数第k个结点
- 输出链表中倒数第K个结点
- 输出链表中倒数第k个结点。
- 输出链表中倒数第k个结点。
- 链表中倒数第k个结点java
- 找出单链表中倒数第 K个结点
- 查找单链表中倒数第k个结点
- 寻找单链表中倒数第k个结点
- 输出链表倒数第K个结点
- 输出该链表中倒数第k个结点
- 13.输出该链表中倒数第k个结点
- jquery android toast效果
- jquery radio的取值 radio的选中 radio的重置
- 黑马程序员-Map-TreeMap-HashMap-Map.Entry
- VS2012调用CRF++
- LINUX 移植系列(一)
- 输出单链表中倒数第k个结点(Java版)
- 访问者模式
- Tomcat开启https
- 图的深度优先搜索DFS
- LINUX 移植系列(二)
- 图的广度优先搜索BFS
- Maven 编译打包时如何忽略测试用例
- 源码、反码、补码详解
- PB中一些技巧