您的位置:首页 > 其它

访问单个节点的删除

2016-02-25 20:00 239 查看
题目:实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true

分析:对于单向链表,要删除一个节点A,只要找到节点A的前驱节点AA,然后修改AA指向下一个节点的值,将其指向A节点的后继即可,但本题有限制,已知要删除的节点,又因为是单链表,所以无法获得其前面一个节点的指针,巧妙的做法是将要删除节点的后一个节点的值拷贝到要删除的节点,然后删除要删除节点的后一个节点。

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