查找链表中倒数第k个节点,若查找成功,返回数据域的值

来源:互联网 发布:java输出多个变量 编辑:程序博客网 时间:2024/06/07 21:54

有两种思路:

思路一:首先遍历一遍链表,得到链表长度n,然后返回n-k+1个节点的数据域

思路二:定义两个指针p和q,都指向头节点的下一个节点,等到p移动到第k个节点,q和p同步移动,等到p移动到链表尾时,q指向的就是倒数第k个节点

思路一相当于遍历两遍链表,思路二则遍历了一遍链表,思路二更优

//找链表中倒数第k个位置上的节点,若查找成功,返回data域的值//思路:首先遍历一遍链表,得到链表长度n,然后返回n-k+1个节点的数据域public int searchK(LinkList L, int k){int i=0;Node p=L.head;while(p!=null){i++;p=p.next;}p=L.head;int j=0;while(j<i-k){p=p.next;j++;}return p.data;}//思路二:定义两个指针p和q,都指向头节点的下一个节点,等到p移动到第k个节点,q和p同步移动,//等到p移动到链表尾时,q指向的就是倒数第k个节点public int searchK2(LinkList L, int k){Node p=L.head.next;Node q=L.head.next;int i=0;while(i<k){i++;p=p.next;}while(p!=null){p=p.next;q=q.next;}return q.data;}



0 0
原创粉丝点击