题解 | #从单向链表中删除指定值的节点#

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

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

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int v;
    struct Node* next;
} Node_t;

int insert_node_tail(Node_t* node, int value) {
    Node_t* s = malloc(sizeof(Node_t));

    s->v = value;
    s->next = node->next;
    node->next = s;

    return 0;
}

Node_t* find(Node_t* head, int value) {
    Node_t* node = head->next;
    while (node) {
        if (node->v == value) {
            break;
        }
        node = node->next;
    }
    return node;
}

int delete (Node_t* head, int value) {
    Node_t* p = head->next;
    Node_t* q;

    while (p) {
        if (p->v == value) {
            break;
        }
        p = p->next;
    }

    if (p->next) {
        q = p->next;
        p->next = q->next;
        p->v = q->v;
        free(q);
    } else {
        free(p);
        head->next = NULL;
    }

    return 0;

}

void print_list(Node_t* head) {
    Node_t* node = head->next;
    while (node) {
        printf("%d ", node->v);
        node = node->next;
    }
}


int main() {
    int node_num;
    scanf("%d", &node_num);
    //printf("node_num:%d\n",node_num);

    int value = 0;
    scanf("%d", &value);
    //printf("value:%d\n",value);

    Node_t head;
    Node_t* p = malloc(sizeof(Node_t));
    p->next = NULL;
    p->v = value;

    head.next = p;

    node_num--;
    int i = 0;
    for (i = 0; i < node_num; i++) {
        int new_value = 0, exist_value = 0;
        scanf("%d", &new_value);
        scanf("%d", &exist_value);
        //printf("%d->%d\n", exist_value, new_value);

        Node_t* p = NULL;
        p =  find(&head, exist_value);
        insert_node_tail(p, new_value);
    }

    int del_v;
    scanf("%d", &del_v);
    //printf("del_v:%d\n",del_v);

    delete (&head, del_v);
    print_list(&head);
    return 0;
}

考察基本的队列操作编写,C++的好写,直接调库,C的要手写

全部评论

相关推荐

01-16 18:34
四川大学 Java
欢迎加入AI:没有啥稳定不稳定,一切都源于业务快速发展还是收缩。我当年一开始去的央企,业务不赚钱,也贼卷,慢慢就开始优化了。。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务