MATLAB中的链表类-手动插入节点而不需要insertAfter()



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

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

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

关于链表类的详细信息在这里给出。

不,我不认为这只适用于这三行代码,因为它忽略了所有其他逻辑,以确保NextPrev被设置为newnode,并忽略了ptrnxt的更新,这将需要发生,以便其Prev现在是newnode。(Next属性是私有的,所以你必须将其更改为公共…)

我不能在我的特定应用程序中使用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方法更加容易和安全。

最新更新