码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】28.Linked List— Remove Linked List Elements删除链表元素

时间:2019-08-29 16:19:55      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:NPU   头结点   else   node   soft   div   return   sof   nod   

Remove all elements from a linked list of integers that have value val.

Example:

Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

说到删除,首先想到定义两个指针,分别指向要被删除的结点和该结点的前驱结点。这里还需要考虑头结点是需要删除结点的特殊情况。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        ListNode*p=head;      //定义前驱结点指针
        if(p==NULL) return NULL;
        ListNode*q=p->next;   //定义要删除的结点指针
        while(1)
        {
            if(q==NULL){ //如果链表只有一个结点且头结点是要删除的结点
                if(head->val==val)
                {
                    delete p;
                    return NULL;
                }
                else return head;
            }
            else{      //如果链表不止一个结点
                if(head->val==val)  //头结点是要删除的结点
                {
                    head=q;
                    delete p;
                    p=head;
                    q=p->next;
                }
                else if(q->val==val)  //找到要删除的结点
                {
                    p->next=q->next;
                    delete q;
                    q=p->next;           
                }
                else{          //没有要删除的结点,则一头后移。
                    p=p->next;
                    q=p->next;
                }
            }
        }
        return head;
    }
};

 

【LeetCode】28.Linked List— Remove Linked List Elements删除链表元素

标签:NPU   头结点   else   node   soft   div   return   sof   nod   

原文地址:https://www.cnblogs.com/hu-19941213/p/11429735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!