关闭

牛客网-访问单个节点的删除

168人阅读 评论(0) 收藏 举报
分类:

实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。

给定带删除的节点,请执行删除操作,若该节点为尾节点,返回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;
        }
    }
};

您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例


分析:题中并没有给出我们所能访问链表的节点,只给了当前我们所要删除的节点,所以我们所能访问的仅仅就是被删除节点之后的所有节点,通常意义上的删除已经不起作用,因为访问不了前一个节点了,仅此而已。。。。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:214668次
    • 积分:2801
    • 等级:
    • 排名:第13259名
    • 原创:98篇
    • 转载:61篇
    • 译文:1篇
    • 评论:20条
    最新评论