您的位置:首页 > 职场人生

《程序员面试金典》--删除链表中的某个元素(这个元素只能访问)

2015-09-17 15:52 567 查看
题目描述:

实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。

给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true

题目分析:

对于一个单向链表,如果给出其中一个节点的情况下,想把这个节点删除,删除该节点以后,还希望链表完整的,这个时候我们无法获取当前节点前面一个节点,只能获取其后面一个节点,如果把当前节点删除掉,那么就无法让链表完整,这个时候可以把当前节点后面的元素赋值给当前节点,让当前节点指向后面节点的下一个节点,然后删除后面节点,这样就相当于删除了当前节点。

特别注意:要删除的节点是尾节点时,则无法实现,所以这个要问清楚考官。

程序代码如下:

class Remove {
public:
bool removeNode(ListNode* pNode) {
// write code here
if(pNode==NULL||pNode->next==NULL)
return false;
pNode->val=pNode->next->val;
ListNode* ppNode=pNode->next;
pNode->next=ppNode->next;
delete ppNode;
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: