我很难理解将一个新节点连接到一个双链接列表的后半部分。我正在编写一个add方法,它接受要在其后面插入新节点的节点。我的难点在于理解如何在前一个节点链接被重新定向到新节点之后链接到下一个节点。
所以,这就是我想到的
Chunk<E> newChunk= new Chunk<E>();
newChunk.next= prevChunk.next;
prevChunk.next= newChunk;
newChunk.prev= newChunk.next.prev;
newChunk.next.prev= newChunk;
我的理解是因为
newChunk.next= prevChunk.next
命令复制prevchunk.next的内存地址并将该值设置为newchunk.next,然后prevchunk.next重置为链接到newchunk。因此,由于prevChunk是这里引用的唯一已在列表中的节点,并且下一个字段已重新路由到newChunk,所以我是否在使用这些引用链接到下一个节点的正确轨道上?
最佳答案
您是对的,但另一方面,大多数双链接列表不是循环的,因为lastnode的next不是firstnode(与firstnode的prev不是lastnode相同)。
如果“prevChunk”是双链接列表中的最后一个节点,并且您将在prevChunk之后添加newChunk作为链接列表中的最后一项,
NewChunk.prev= newChunk.next.prev;
实际上是将newchunk的previous元素设置为null的previous元素,这可能不是您想要的
您可能需要检查previous.next最初是否为空。