题解 | #牛牛的链表删除#

牛牛的链表删除

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

//数据结构 删除结点(+尾插法)


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

typedef struct LNode{
    int data;                    //存放元素值
    struct LNode *next;          //指向后继节点
}LNode,*Linklist;

//尾插法 
Linklist Creat_list(int count){
    Linklist head = (Linklist)malloc(sizeof(LNode));        //定义头指针
    Linklist node=NULL;                                    //定义工作指针
    Linklist end=NULL;                                    //定义尾指针
    head->next = NULL;
    end=head;
//    int count,m;
    int data;                                            //存放当前结点数据
//    scanf("%d",&count);                                    //存放数组长度
//    scanf("%d",&m);                                    //存放要删除的元素
    for(int i=0;i<count;i++){
        scanf("%d",&data);
//        if(data!=m){
        node = (LNode*)malloc(sizeof(LNode));
        node->data = data;                        //存放结点数据域
        end->next = node;                            //将新结点尾插到链表
        end = node;                                //更新尾结点
//        }
    }
    end->next = NULL;
    return head;
}

//删除结点
void del(LNode *L,int m){
    LNode *p=L,*q=L->next;
    while(q){
        if(q->data == m){
            p->next=q->next;
            free(q);
            q=p->next;
        }
        else{
            p=q; q=q->next;
        }
    }
}

void output(Linklist head){
    Linklist a = head->next;
    while(a){
        printf("%d",a->data);
        printf(" ");
        a=a->next;
    }
    
}

int main(){
    int n,m;
    scanf("%d",&n);
    scanf("%d",&m);
    Linklist head=Creat_list(n);
    del(head,m);
    output(head);
}

全部评论

相关推荐

鼠鼠第一次实习,啥也不懂一直是自己一个人吃的饭,不会做工作老是被嫌弃,大人的世界是这样的吗?
我是星星我会发亮:好的mt有两种,一种愿意教你的,一种几乎什么活都不给你派让你很闲允许你做自己事情的
实习吐槽大会
点赞 评论 收藏
分享
06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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