【剑指offer】【链表】18.删除链表的节点

题目链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/

双指针

创建一个值为0的头结点,然后利用两个指针同时向前移动,判断第二个指针节点的值是否等于val;

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* deleteNode(ListNode* head, int val) {
        ListNode *dummy = new ListNode(0);
        dummy->next = head;
        ListNode *p = dummy, *q = head;
        while(q)
        {
            if(q->val == val){
                p->next = p->next->next;
                break;
            }
            q = q->next;
            p = p->next; 
        }
        return dummy->next;
    }
};
posted @ 2020-04-06 21:40  NaughtyCoder  阅读(108)  评论(0)    收藏  举报