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

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

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

#include <stdio.h>
#include <stdlib.h>
/*
 *就这么一道题调试了半个多小时,由于涉及多次输入操作,在一次输入未彻底完成前,添加打印信息会失真
 *调试出的原因就是在删除节点时,指针指向搞反了
 */
typedef struct ListNode
{
    int value;
    struct ListNode *pNext;
}listNode;
int main() {
    int a, b,num, del;
    listNode *head=NULL,*rear=NULL,*tmp=NULL;
    while (scanf("%d %d", &num, &a) != EOF) {
        head = (listNode *)malloc(sizeof(listNode));
        tmp = (listNode *)malloc(sizeof(listNode));
        head->pNext=tmp;
        tmp->pNext=NULL;tmp->value=a;
        //printf("%d %d\n",num,a);
        for(int i=0;i<num-1;++i)
        {
            rear=head->pNext;
            scanf("%d %d", &a, &b);
            //printf("%d %d ", a, b);

            while(rear)
            {
                if(rear->value==b)
                {
                    tmp=(listNode *)malloc(sizeof(listNode));
                    tmp->pNext=rear->pNext;
                    rear->pNext=tmp;tmp->value=a;
                    break;
                }
                rear=rear->pNext;
            }
        }
        scanf("%d",&del);           
        tmp=head->pNext;rear=head;
        while(tmp)
        {
            if(tmp->value==del)
            {
                if(tmp == head)
                {
                    head=head->pNext;
                    free(tmp);
                    tmp=head;rear=head;
                }    
                else {
                    rear->pNext=tmp->pNext;
                    free(tmp);
                    tmp=rear->pNext;
                }
            }
            else {
                rear=tmp;tmp=tmp->pNext;
            }
        }
        if(head->pNext==NULL) printf("\n");
        else
        {   
            rear=head->pNext;
            while(rear)
            {
                printf("%d ", rear->value);
                tmp=rear;rear=rear->pNext;free(tmp);
            }
        }
    }
    return 0;
}

全部评论

相关推荐

Edgestr:没项目地址就干脆把那一栏删了呗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
5376次浏览 53人参与
# 百度工作体验 #
316382次浏览 2233人参与
# 巨人网络春招 #
11603次浏览 232人参与
# 沪漂/北漂你觉得哪个更苦? #
1877次浏览 45人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16954次浏览 137人参与
# 春招至今,你的战绩如何? #
16914次浏览 153人参与
# MiniMax求职进展汇总 #
25513次浏览 323人参与
# 你的实习产出是真实的还是包装的? #
3588次浏览 59人参与
# HR最不可信的一句话是__ #
1221次浏览 34人参与
# AI面会问哪些问题? #
1107次浏览 30人参与
# 你做过最难的笔试是哪家公司 #
1447次浏览 24人参与
# AI时代,哪个岗位还有“活路” #
3149次浏览 55人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
153003次浏览 889人参与
# 简历第一个项目做什么 #
32276次浏览 371人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8078次浏览 44人参与
# 简历中的项目经历要怎么写? #
311392次浏览 4289人参与
# XX请雇我工作 #
51168次浏览 171人参与
# 投格力的你,拿到offer了吗? #
178458次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77047次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
65091次浏览 921人参与
# 秋招白月光 #
731753次浏览 5441人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187716次浏览 1123人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务