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

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

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

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct List {
    struct List* before;
    int val;
    struct List* next;
} list;
list* seek(int i, list* L) {
    list* p = L;
    while (i != p->val) {
        p = p->next;
    }
    return p;
}
int main() {
    int n = 0;
    scanf("%d", &n);
    int arr[2000];
    memset(arr, 0, sizeof(arr));
    int i = 0;
    for (i = 0; i < 2 * n; i++) {
        scanf("%d", &arr[i]);
    }
    list* L = malloc(sizeof(list));
    L->val = arr[0];
    L->next = NULL;
    L->before = NULL;
    for (i = 1; i <= 2 * n - 3; i += 2) {
        list* q = seek(arr[i + 1], L);
        list* p = malloc(sizeof(list));
        p->val = arr[i];
        p->next = q->next;
        p->before = q;
        q->next = p;
        if (p->next != NULL)
            p->next->before = p;
    }
    list* p = seek(arr[2 * n - 1], L);
    if (p->next != NULL)
        p->before->next = p->next;
    free(p);
    p = L;
    while (p != NULL) {
        printf("%d ", p->val);
        p = p->next;
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 15:39
希望奇迹发生的布莱克...:真的是 现在卷实习就是没苦硬吃
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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