203. Remove Linked List Elements。

来源:互联网 发布:免费海关数据查询 编辑:程序博客网 时间:2024/06/04 01:38

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

Example
Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6
Return: 1 –> 2 –> 3 –> 4 –> 5


很基础的题,对链表进行遍历查找删除节点,由于给的节点第一个就有数据,这其实不好计算,可以使用一个存放空数据的空的头结点来简化计算过程。

#include <iostream>using namespace std;/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */struct ListNode {    int val;    ListNode *next;    ListNode(int x) : val(x), next(NULL) {}};class Solution {public:    ListNode* removeElements(ListNode* head, int val) {        ListNode temp(0);        temp.next = head;//自己创造一个头结点        ListNode* p = &temp;        ListNode* q = head;        while(q) {            if(q->val == val) {                p->next = q->next;            } else {                p = p->next;            }            q = q->next;        }        return temp.next;    }};int main() {    Solution s;    ListNode node1(1);    ListNode node2(2);    ListNode node3(6);    ListNode node4(3);    ListNode node5(4);    ListNode node6(5);    ListNode node7(6);    node1.next = &node2;    node2.next = &node3;    node3.next = &node4;    node4.next = &node5;    node5.next = &node6;    node6.next = &node7;    s.removeElements(&node1,6);}
原创粉丝点击