我遇到了一个问题,在这个问题中,您应该交换双链接列表中的一组节点。例如:对于列表1
双重链接列表有头和尾。此外,每个节点都有prev
和Next
指针,如果节点分别是head
或尾部
,则指针为null
。
我们在这里的假设是,要交换的两个段(start1-end1)
和(start2-end2)
不重叠。
将所有prev
和next
引用复制到临时变量
1. prev1=start1.prev, prev2=start2.prev, next1=end1.next, next2=end2.next
交换start1
和start2
,如果start1
是head
2. start2.prev=prev1
3. if prev1=null, head=start2 else prev1.next=start2
4. start1.prev=prev2
5. prev2.next=start1
交换end1
和end2
,如果end2
是tail
6. end1.next=next2
7. if next2=null, tail=end1 else next2.prev=end1
8. end2.next=next1
9. next1.prev=end2
双链表中的"节点"有2个指针:-下一个元素-上一个元素
您应该复制两个间隔的第一个和最后一个元素的指针
-First1,Last1 = 2,4 //(i mean the pointer to 2 and 4 not integer)
-First2,Last2 = 6,7
作为交换间隔的最终操作,您应该说
(First2.previous).next = First1 // ( First2.previous is 5 in the example)
(Next2.next).previous = Next1 // (Next2.next is 8 in the example)
(First1.previous).next = First2 //(First1.previous is 1)
(Next1.next).previous = Next2 //(Next1.next is 5)
我在Java中实现一个双链接列表时遇到了一个问题。特别是要交换2个以下节点(在我的例子中,一个节点包含一个政治候选人)。 假设下面的DLL: head- 作为输出,我没有从头到尾的正确DLL,但从头到尾都很好: 我已经写了几个版本的这个方法reverseTwoNode。我甚至尝试在节点内部交换数据,而不是交换节点,我也有同样的问题。你能帮我真是太好了,我花了这么多时间在这个简单的功能上,我看不出有
给定单链接列表:
以下代码删除双链接列表中的第一个节点。 如果列表只包含1个元素,我们将last的引用设置为null。我的问题是,我们为什么不将first的引用设置为null?这会有什么不同吗?
我正在尝试交换双链接列表中的两个节点。下面是具有交换功能的程序部分。 当我运行这个程序时,在第一个和第二个节点的情况下,它崩溃了。而在任何其他节点的情况下,它提供无限循环输出。(例如:-2- 我知道还有一些关于节点交换的问题,但是我没有找到任何与我的问题相似的问题。请帮帮我...!! 提前谢谢。
我有麻烦删除双向链表中的节点,程序崩溃,我不能解决这个问题。你能帮我吗?这是创建新节点,查看它们并删除它们的完整代码。 我认为这个问题与Node del的scanf()有关,但我不确定。当我只是通过或