面试题18-删除链表的节点
题目一:
在O(1)的时间内删除链表节点。 给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。链表节点与函数的定义如下:
struct ListNode
{
int m_nValue;
ListNode *m_pNext;
};
void DeleteNode(ListNode ** pListHead, ListNode * pToBeDeleted);
解题思路
假设要删除的节点的确在链表中。 节点i为要删除的节点,节点j为节点i的下一个节点,把节点j的内容复制覆盖节点i,接下来再把节点i的m_pNext指向j的下一个节点,再删除节点j。这种方法不用遍历链表上节点i前面的节点。 上述思路还有一个问题:如果要删除的节点位于链表的尾部,那么它就没有下一个节点,怎么办?我们仍然从链表的头节点开始,顺序遍历得到该节点的前序节点,并完成删除操作。 如果链表只有一个节点,而我们又要
面试题18-删除链表的节点最先出现在Python成神之路。
版权声明:
作者:lichengxin
链接:https://www.techfm.club/p/4855.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论