问题:
只知道指针P指向一个单向非循环链表的节点,不是头节点也不是尾节点,从链表上把 P指向的节点删除...
思路:
一般的思路是要遍历链表找到节点P的前驱节点, 然后再删掉节点P, 但是这样效率不是很高, 可以换个思路, P节点的后继节点是可以在O(1) 复杂度下得到的, 可以将P的后继节点的数据复制到P节点中, 然后删掉P的后继节点, 重新接链即可...
实现如下:
temp = p->next;
p->data = p->next->data;
p->next = p->next->next;
delete temp;
原文连接:
本文介绍了一种高效删除单向非循环链表中指定节点的方法,避免了寻找前驱节点的过程,通过将后继节点的数据复制到目标节点并删除后继节点的方式实现了O(1)时间复杂度的删除操作。
1384

被折叠的 条评论
为什么被折叠?



