快慢指针的应用
快慢指针的思想是在进行链表遍历的时候,用两个指针同时指向链头,每次移动的步长不一样。最后的遍历的结果就是,快的已经走完了,慢的还在链表中间的某一个节点上。
- 使用场景,一次遍历,定位链表中指定位置。这里的位置是相对位置,比如中间位置,三分之二位置,或者是三分之一位置等
- 判断一个链表是否是回文结构,没有空间消耗的情况下可以使用该方式。可以使用快慢指针定位到中间元素以后,从中间元素到最后的元素,反向操作链表的指针。然后分别中两段开始遍历进行对比,到中间结束。还有方法二:当定位到中间节点后,可以把中间节点到尾节点中间的元素入栈,然后一个个出栈和链头开始遍历的进行对比。
单链表排序
可以用三个链表分段记录,然后进行合并思想来解决。分别定义六个指针变量。hs,he,ms,me,bs,be,分别代表前面连接的开始结束,中间链表的开始结束,后面链表的开始结束,并初始值为null。取一个数x作为比较参数,并从头开始遍历链表进行大小比较。<x就确实是在放在左边链表了,>x就确定是右边链表了,==就中间了链表。
单个链表是否为环链
- 普通方法可以放在集合中判断,当放入已经存在的节点的时候就是入环的节点。
- 快慢指针应用,慢指针一次一步,快指针一次两步,环结构必相交。
一次遍历,奇偶拆分
标签:存储,遍历,线性表,元素,链表,中间,链式,节点,指针 From: https://www.cnblogs.com/euler-blog/p/18598364用两个指针,一个指向头指针,一个指向第二个元素元素指针,一个移动两步即可。