链表的小问题

1、在一个单向链表中,如何快速找到链表的倒数第3个结点?

定义指针p遍历到第3个结点;在定义指针q,从起始节点开始遍历;
p和q都单步遍历,直到p遍历结束,q指向的就是倒是第3个结点


2、在一个单向链表中,如何快速找到链表的中间结点?

定义指针p和q,指针p单步遍历,指针q双步遍历,指针q遍历结束时,指针p指向的就是中间结点

3.在一个单向链表中,如何快速判断链表是否有环?

如果有环,如何计算环的起点?

定义两个指针p和q,指针p单步遍历,指针q双步遍历,如果指针p和q能相遇,说明链表有环。

如果有环,将p和q相遇的点设为相遇点,然后指针p从结点起始位置开始单步遍历,q也从相遇点单步遍历,指针p和q的相遇的点就是环的起点。

你可能感兴趣的:(链表,数据结构)