java – 如何在一次迭代中走到奇异链表的中间?
发布时间:2020-12-15 04:53:37 所属栏目:Java 来源:网络整理
导读:最近我被问到一个问题,在一个单独的链表中我们如何在一次迭代中进入列表的中间位置. A -- B -- C -- D (even nodes) 为此,它应该返回指向B的地址 A -- B -- C (odd nodes) 对此,它也应该返回指向B的地址 有一个解决方案,两个指针一个移动一次,其他移动两次,
最近我被问到一个问题,在一个单独的链表中我们如何在一次迭代中进入列表的中间位置.
A --> B --> C --> D (even nodes) 为此,它应该返回指向B的地址 A --> B --> C (odd nodes) 对此,它也应该返回指向B的地址 有一个解决方案,两个指针一个移动一次,其他移动两次,但它似乎没有在这里工作 LinkedList p1,p2; while(p2.next != null) { p1 = p1.next; p2 = p2.next.next; } System.out.print("middle of the node" + p1.data); //This does not give accurate result in odd and even 如果有人之前做过这个,请帮忙. 解决方法
除非您成功地将p2提前两次,否则无法前进p1;否则,如果列表长度为2,则最终两者都指向末尾(并且您指示甚至长度列表应该朝向开头舍入).
所以: while ( p2.next != null ) { p2 = p2.next; if (p2.next != null) { p2 = p2.next; p1 = p1.next; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |