题解 | #从单向链表中删除指定值的节点# 构造,删除,打印

从单向链表中删除指定值的节点

https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f

#include <iostream>
using namespace std;

struct ListNode {
    ListNode* next;
    int val;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int value) : val(value), next(nullptr) {}
    ListNode(ListNode* next) : val(0), next(next) {}
    ListNode(ListNode* next, int value) : val(value), next(next) {}
};

int main() {
    int num;
    // 输入个数
    cin >> num;
    ListNode* head = nullptr;
    while (num--) {
        // 构造头节点
        if (!head) {
            int headVal;
            cin >> headVal;
            head = new ListNode(headVal);
            continue;
        }
        int first, second;
        cin >> first >> second;
        // second值和链表中相等,将first插入到该链表后
        auto* p = new ListNode(first);
        auto* q = head;
        while (q) {
            if (q->val == second) {
                auto* tmp = q->next;
                q->next = p;
                p->next = tmp;
                break;
            }
            q = q->next;
        }
    }
    int delVal;
    // 待删除节点值
    cin >> delVal;
    ListNode dummy;
    dummy.next = head;
    auto* pre = &dummy;
    while (head) {
        if (head->val == delVal) {
            pre->next = head->next;
            break;
        }
        head = head->next;
        pre = pre->next;
    }
    head = dummy.next;
    while (head) {
        cout << head->val << " ";
        head = head->next;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 12:05
俺不中了,BOSS遇到了一个hr,我觉得我咨询的问题都很正常吧,然后直接就被拒绝了???
恶龙战士:你问的太多了,要不就整理成一段话直接问他,一个一个问不太好
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 12:10
点赞 评论 收藏
分享
吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
黑皮白袜臭脚体育生:看了这篇帖子之后已经第一百次质问老妈,仍然没有得到我的老妈是老板的回答
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务