gpt4 book ai didi

algorithm - MATLAB 中的链表类 - 无需 insertAfter() 手动插入节点

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:26:43 28 4
gpt4 key购买 nike

我正在尝试在 MATLAB 中使用链表类实现。
现在,它表示将节点插入列表的唯一方法是使用 insertBefore()insertAfter()
但是我想通过指定新节点的 Next 值来手动插入节点,例如

newnode = dlnode(new);
ptr.Next = newnode;
newnode.Next=ptrnxt;

这行得通吗?我不能在我的特定应用程序中使用 insertBefore()insertAfter(),因为我没有维护当前节点的指针。

有关链接列表类的详细信息已给出 here .

最佳答案

不,我认为只用这三行代码是行不通的,因为它忽略了为确保 NextPrevnewnode 设置并忽略需要发生的对 ptrnxt 的更新,以便其 Prev 现在是 newnode。 (并且 Next 属性是私有(private)的,因此您必须将其更改为公共(public)...)

不清楚你的意思我不能在我的特定应用程序中使用 insertBefore() 或 insertAfter(),因为我没有维护当前节点的指针。但是您有要在其间插入 newnode 的节点吗?我猜你的节点顺序(在插入新节点之前)是 …,ptr,ptrnxt,…。那为什么不直接使用

newnode.insertAfter(ptr);

这会将顺序更改为 ...,ptr,newnode,ptrnxt,... 并且每个节点的所有三个属性都将正确/自动设置。

否则,您必须将代码更改为类似

newnode      = dlnode(new);
ptr.Next = newnode;
newnode.Prev = ptr; % to make sure that newnode points back to ptr
newnode.Next = ptrnxt;
ptrnxt.Prev = newnode; % to make sure that ptrnxt points back to newnode

使用 insertAfterinsertBefore 方法更容易也更安全。

关于algorithm - MATLAB 中的链表类 - 无需 insertAfter() 手动插入节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24339639/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com