C++移除链表元素完整代码

203. 移除链表元素

#include <iostream>
#include <vector>
using namespace std;
struct ListNode {
    int val;//结点值
    ListNode *Next;//指向后继结点
    ListNode(int x) :val(x), Next(nullptr) {}//有参构造函数
};
class Solution {
public:
    ListNode* creatList(){
        vector<int> nums = {1, 2, 3, 3, 1, 5, 1};
        //头结点指向容器第一个值
        ListNode* head =new ListNode(nums[0]);
        ListNode* p =head;
        for (int i = 1; i < nums.size(); ++i) {
            p->Next = new ListNode(nums[i]);
            p = p->Next;
        }
        return head;
    }
    void printList(ListNode* head){
        ListNode* p =head;
        while(p != NULL){
            cout<<p->val<<endl;
            p = p->Next;
        }
    }
    ListNode* removeElements(ListNode* head, int val) {

        //删除头节点
        while(head != NULL && head->val == val){
            ListNode* tmp = head;
            head = head->Next;
            delete tmp;
        }

        //删除非头结点
        ListNode* cur = head;
        while (cur != NULL && cur->Next != NULL){
            if(cur->Next->val == val){
                ListNode* tmp = cur->Next;
                cur->Next = cur->Next->Next;
                delete tmp;
            } else{
                cur = cur->Next;
            }
        }
        return head;
    }
};

int main(){
    ListNode* Head = Solution().creatList();
    ListNode* p = Solution().removeElements(Head,1);
    Solution().printList(p);
    system("pause");
    return 0;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值