Remove Linked List Elements

来源:互联网 发布:上海网站建设优化 编辑:程序博客网 时间:2024/04/30 20:20

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

Credits:

Special thanks to @mithmatt for adding this problem and creating all test cases.

题意:删除链表中值等于val的节点;

注意问题:表头需要特殊处理:

1.如果一开始链表就是空的就需要返回空

2.如果表头剔除符合条件的节点之后,链表变为空,则返回一个NULL

其他后面的就按照正常的一个个删除就好了,但是实现的代码没有对内存进行释放,但是题目不要求就没有做了。

#include<cstdio>#include<cstring>#include<string>#include<cstdlib>#include<map>#include<iostream>using namespace std;//Definition for singly-linked list.struct ListNode {    int val;ListNode *next;}; class Solution {public:    ListNode* removeElements(ListNode* head, int val) {    if(head == NULL)    {    return head;    }while(head->val == val){if(head->next == NULL){return  NULL;}elsehead = head->next;}ListNode* node = head;while(node->next!=NULL){if(node->next->val == val){node->next = node->next->next;}else{node = node->next;}}return head;    }};ListNode* create_List(){ListNode* node1 = new ListNode;ListNode* node2 = new ListNode;ListNode* node3 = new ListNode;ListNode* node4 = new ListNode;ListNode* node5 = new ListNode;node1->val =  1;node1->next = node2;node2->val = 2;node2->next = node3;node3->val = 1;node3->next=node4;node4->val = 3;node4->next = node5;node5->val = 1;node5->next = NULL;return node1;}int main(){ListNode* node = new ListNode;ListNode* head = new ListNode;//head = create_List();head->val = 1;head->next = NULL;node = head;while(node){cout << node->val <<" ";node = node->next; }cout<<endl;Solution s;head = s.removeElements(head,1);node = head;while(node){cout << node->val <<" ";node = node->next; }cout << endl;return 0;}


0 0