算法:从单链表中删除一个中间节点
write by ai
原文:CSDN 链接 `n原文连接:http://www.pixelstech.net/article/1446199844-Algorithm-%3A-Delete-middle-node-from-singly-linked-list点击打开链接
关于单链表的问题在技术面试中被频繁问到,今天我们就将和你分享一个关于单链表的算法问题,以下是问题描述:
假设你知道的唯一信息是一个指向单链表中某一中间节点的指针,关于这个单链表的其他信息你都不知道,请在不影响单链表结构的前提下删除这个节点。
一开始可能会认为如果你知道头结点这个问题就很简单,不幸的是我们不知道头结点在哪也因此无法知道这个节点的前驱指针。实际上我们有一个巧妙的方法来“删除”这个指针。我们只需要将这个指针后继节点指向的内容覆盖这个指针就行了,而不是删除它。(这样也就使前驱指针的next指向了要删除节点的next指针指向的节点)
下面是一个用C语言写的例子:
CSDN_CODE_BLOCK_0_TOKEN 输出结果将会是:
A->B->C->D-null
A->B->D->null