实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。
给定带删除的节点,请执行删除操作,若该节点为尾节点,返回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 || pNode==NULL)
return false;
ListNode *temp=pNode->next;
pNode->val=temp->val;
pNode->next=temp->next;
delete temp;
return true;
}
};