问题:给定一个排序的链表
1->2->3->4->5->6->7
更改链接列表中的指针以使其
7->1->6->2->5->3->4
使用恒定空间。
我试图用以下算法来解决它:
>
从中间节点反转链接列表。将中间节点标记为y,将起始节点标记为x。
1->2->3->7->6->5->4
x y
如果y=中间节点,y!=x、 下一步,然后交换y和x。然后交换x和x。
1->7->3->2->6->5->4
x y
7->1->3->2->6->5->4
x y
x前进两个节点,y前进一个节点。
7->1->3->2->6->5->4
x y
现在如果(x!=y){swap x和y}
7->1->6->2->3->5->4
x y
x前进两个节点,y前进一个节点
7->1->3->2->6->5->4
x y
所以最后我们得到了
7->1->6->2->5->3->4
问题:
有没有更简单的方法?
你可以在链接列表问题17和18中找到两个复杂的解决方案。
这是一个简单的解决方案:
样本:
1-
我有下面的程序来反转单链表中的元素。我不能让它工作。我使用了简单的变量交换技术来交换节点,但当我打印时,它不会超出第一个节点。
问题内容: 有人可以告诉我为什么我的代码有效吗?我想在Java中反转单个链接列表:这是方法(无法正常工作) 这是Node类: 在输入4-> 3-> 2-> 1上,我得到了输出4。我对其进行了调试,它正确设置了指针,但是我仍然不明白为什么它仅输出4。 问题答案: Node next = tmp.next; while(tmp != null){ 那么,当tmp == null时会发生什么呢? 不过,
023. Merge k Sorted Lists [H] 问题 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. Subscribe to see which companies asked this question 思路 这题明显就是Merge
21. Merge Two Sorted Lists 问题 Merge two sorted linked lists and return it as a new list. 思路 这个题目很简单也有几个可以考虑的思路,一个是比较直接的方式,重新构造链表,一种是利用递归 思路1 :用新的链表 这里用了一个新的节点了保存结果的链表,这里为了方便链表的扩充,增加一个临时的节点变量(否则每次加入都要遍
还缺少的是将最后一个节点的next赋值为NULL。 在任何世界里,像这样的东西会起作用吗?它给出了一个运行时/分段错误。
我试图借助单链表编写合并排序,节点定义如下, 合并排序的工作方式如下: i、 将未排序的列表划分为n个子列表,每个子列表包含1个元素(1个元素的列表被视为已排序)。 二、。重复合并子列表以生成新排序的子列表,直到只剩下1个子列表。这将是排序列表。代码如下所示。 我像这样打入会电话, 结果是,所有负值似乎都消失了。这里有什么问题?