
链表有关的算法
qiannuo_
这个作者很懒,什么都没留下…
展开
-
输出链表中倒数第k个结点
设置2个指针:fast和slow都指向头结点,fast先移动k-1步,判断是否到达链表尾部,若到达,说明k不合法;然后fast和slow同时移动,循环直到先行的指针值为NULL值,另一个指针所指的位置就算要查找的位置public class FindK { public static void main(String[] args){ Node n1=new Node...原创 2018-11-13 19:12:22 · 176 阅读 · 0 评论 -
检测一个链表是否有环
定义2个指针,fast与slow,初始值均指向链表头,同时移动,fast移动2步,slow移动1步,快指针每移动一次都要与慢指针比较,直到快指针与慢指针相等为止,证明有环,否则无环(fast先到尾部)public class IsLoop { public static void main(String[] args){ Node n1=new Node(5); ...原创 2018-11-13 19:30:27 · 194 阅读 · 1 评论 -
判断2个链表是否相交,如果相交,求出交点
如果2个链表相交,一定有相同的尾结点思路:分别遍历找到尾结点,比较,若相同则相交,否则不相交。如果相交,求出交点public class XiangJiao { public static void main(String[] args){ Node p1=new Node(5); Node p2=new Node(3); Node...原创 2018-11-13 20:27:30 · 213 阅读 · 0 评论 -
合并2个有序链表
两种方法实现:1.递归2.非递归public class MergeList { public static void main(String[] args){ Node p1=new Node(2); Node p2=new Node(3); Node p3=new Node(5); Node p4=new N...原创 2018-11-13 21:36:23 · 379 阅读 · 0 评论 -
在一个排序的链表中,删除重复的结点,返回链表头指针
1.遍历链表2.双重循环遍历,外循环遍历链表,假设外循环当前结点为cur,内循环从cur开始遍历,若碰到与cur所指结点相同,则删除这个重复结点。import java.util.Hashtable;public class DelDup { public static void main(String[] args){ Node n1=new Node(2)...原创 2018-11-14 11:58:42 · 505 阅读 · 0 评论