📌  相关文章
📜  用于将仲裁指针指向链接列表中的最大值右侧节点的 Javascript 程序

📅  最后修改于: 2022-05-13 01:57:45.822000             🧑  作者: Mango

用于将仲裁指针指向链接列表中的最大值右侧节点的 Javascript 程序

给定单链表,每个节点都有一个当前指向 NULL 的附加“任意”指针。我们需要将“任意”指针指向右侧链表中的最大值节点。

listwithArbit1

一个简单的解决方案是一个一个地遍历所有节点。对于每个节点,找到右侧具有最大值的节点并更改下一个指针。该解决方案的时间复杂度为 O(n 2 )。

一个有效的解决方案可以在 O(n) 时间内工作。以下是步骤。

  1. 反转给定的链表。
  2. 开始遍历链表,存储目前遇到的最大值节点。使每个节点的仲裁指向最大值。如果当前节点中的数据超过了迄今为止的max节点,则更新max。
  3. 反向修改链表并返回头部。

以下是上述步骤的实现。

Javascript


Javascript


输出:

Resultant Linked List is: 
Node    Next Pointer    Arbit Pointer
5               10              10
10              2               3
2               3               3
3               NULL            NULL

递归解决方案:
我们可以递归到达最后一个节点,从最后遍历链表。递归解决方案不需要反转链表。我们还可以使用堆栈代替递归来临时保存节点。感谢 Santosh Kumar Mishra 提供此解决方案。

Javascript


输出:

Resultant Linked List is: 
Node    Next Pointer    Arbit Pointer
5               10              10
10              2               3
2               3               3
3               NULL            NULL

请参考完整文章 Point arbit pointer to maximum value right side node in alinked list 了解更多详情!