实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。
给定带删除的节点,请执行删除操作,若该节点为尾节点,返回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) //当前这个节点是尾节点的话,返回false
return false;
else
{ //删除的这个节点不是尾节点
pNode -> val = pNode -> next ->val;
pNode -> next = pNode -> next ->next;
free(pNode -> next);
return true;
}
}
};
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
分析:题中并没有给出我们所能访问链表的节点,只给了当前我们所要删除的节点,所以我们所能访问的仅仅就是被删除节点之后的所有节点,通常意义上的删除已经不起作用,因为访问不了前一个节点了,仅此而已。。。。