访问单个节点的删除

来源:互联网 发布:影楼制作软件apk 编辑:程序博客网 时间:2024/05/09 19:23

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

给定带删除的头节点和要删除的数字,请执行删除操作,返回删除后的头结点。链表中没有重复数字

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) : val(x), next(NULL) {}};*/class Remove {public:    ListNode* removeNode(ListNode* pHead, int delVal) {        //第一种情况:删除的节点是头节点        if(pHead->val == delVal){            ListNode *p = pHead->next;            pHead->next = NULL;            return p;//返回删除后的头结点        }        //第二种情况:删除的节点不是头节点        ListNode *pre = pHead;        ListNode *cur = pHead->next;        while(cur != NULL){            //如果要删除的值为cur            if(cur->val == delVal){                //就用cur的下一个值去覆盖当前值                pre->next = cur->next;                cur->next = NULL;            }            pre = pre->next;            cur = cur->next;        }        return pHead;    }};


原创粉丝点击