实现一个算法,删除单向链表中间的某个节点,假定你只能访问该节点。
给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true。
难点:这题的关键是没有给你头节点,如何利用给定的待删除节点,删除该节点?
思路:将删除节点的下一个节点复制到带删除的节点,然后删除一下节点。
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Remove {
public:
bool removeNode(ListNode* pNode) {
if(pNode->next==NULL)
return false;
ListNode *temp=pNode->next;
pNode->val=temp->val;
pNode->next=temp->next;
delete temp;
temp=NULL;
return true;
}
};