【程序员面试金典】访问单个节点的删除
题目
实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。
给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true
分析
复制下一个结点的内容到当前结点,再删除下一个结点,如果该节点为尾结点,则无解。
解答
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){
delete pNode;
return false;
}
ListNode* deleteNode = pNode->next;
pNode->val = deleteNode->val;
pNode->next = deleteNode->next;
delete deleteNode;
return true;
}
};