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

    xiaoxiao2022-06-22  20

    有两种思路:

    思路一:首先遍历一遍链表,得到链表长度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; }

    转载请注明原文地址: https://ju.6miu.com/read-1122745.html

    最新回复(0)