华为机试:从单向链表中删除指定值的节点

#include <iostream>
using namespace std;

struct node{
    int value;
    struct node* next;
};

int main() {
    int n;
    cin >> n;
    int headvalue;
    cin >> headvalue;
    node* head = new node;
    head->value = headvalue;
    head->next = nullptr;
    while (--n) {
        int p, v;
        cin >> p >> v;
        node* q = head;
        while (q->value != v) q = q->next;
        node* r = new node;
        r->value = p;
        r->next = q->next;
        q->next = r;
    }
    int des;
    cin >> des;
    node* q = head;
    node* r = head;
    while (q->value != des) {
        r = q;
        q = q->next;
    }
    if (q == head) {
        while (q->next != nullptr) {
            cout << q->next->value << " ";
            q = q->next;
        }
        cout << endl;
    }
    else {
        r->next = q->next;
        free(q);
        while (head != nullptr) {
            cout << head->value << " ";
            head = head->next;
        }
    }
    return 0;
}

全部评论

相关推荐

06-18 15:03
门头沟学院 Java
至少实习看起来比去年好?问了下群里的同学和身边的同学,人均有offer。有的还有好几个大厂offer
菜鸟1973:上一年暑期也是人均大厂实习offer,结果秋招跟不招人一样,大部分都转正了
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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