Java输出链表倒数第k个节点
|
问题描述 输入一个链表,输出该链表中倒数第k个结点。(尾结点是倒数第一个) 结点定义如下:
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
思路1: 先遍历链表,计算其长度length; 代码如下:
public ListNode FindKthToTail(ListNode head,int k) {
if(head == null || k <= 0){
return null;
}
//直接遍历
ListNode p = head;
int length = 1;
while(p.next != null){
length++;
p = p.next;
}
int index = length - k + 1;
if(index <= 0){
return null;
}
p = head;
int num = 1;
while(p.next != null && num < index){
num++;
p = p.next;
}
if(num < index){
return null;
}else{
return p;
}
}
思路2: 期待只遍历链表一次就能得到。 代码:
public ListNode FindKthToTail(ListNode head,int k) {
if(head == null || k <= 0){
return null;
}
//直接遍历
ListNode p = head;
ListNode q = head;
for(int i = 0; i < k-1; i++){
if(q == null){
return null;
}
q = q.next;
}
if(q == null){
return null;
}
while(q.next != null){
p = p.next;
q = q.next;
}
return p;
}
思路3: 将链表反转,那么原问题就变为求正数第k个结点。 链表反转:参考《Java语言实现反转链表代码示例》 总结 以上就是本文关于Java输出链表倒数第k个节点的全部内容,感兴趣的朋友可以继续参阅:Java编程删除链表中重复的节点问题解决思路及源码分享、Java编程实现从尾到头打印链表代码实例以及本站其他相关专题,如有不足之处,欢迎留言指出,小编一定及时更正,给大家更好的阅读体验和帮助,感谢朋友们对本站的支持! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
