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

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

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;
}

全部评论

相关推荐

昨天 10:44
青岛工学院 Java
机械打工仔:对方没做错任何事,你自己在这自找没趣呢,就算他工资不高,人家定多少薪资是人家的事,况且人家写了1~3年清清楚楚
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-01 17:00
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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