首页 > 编程语言 > 详细

单链表值删除节点(C语言环境下)

时间:2021-08-10 12:30:35      阅读:21      评论:0      收藏:0      [点我收藏+]

结构体节点:

typedef struct student {
    int num;        //学号
    int score;    //分数
    char name[20];
    struct student *next;//指针域
}STU;

demo:

1void link_delete_num(STU **p_head,int num)
{
    STU * pb,*pf;
    pb=*p_head;//让pb指向头节点
    if(*p_head == NULL)//链表为空链表
    {
        printf("链表为空\n");
        return ;
    }
    while(pb->num !=num && pb->next!=NULL)//循环查找要删除的节点
    {
        pf=pb;
        pb=pb->next;
    }
    if(pb->num == num)//找到了一个节点的num和num相等
    {
        if(pb == *p_head)//找到的节点是头节点
        {
            *p_head = pb->next;
        }
        else//找到的节点是普通节点
        {
            pf->next = pb->next;
        }
            free(pb);
    }
    else//没有找到咱们要删除的节点
    {
        printf("没有找到您要删除的节点\n");
    }
}
 
2void link_delete_name(STU **p_head,char *name)
{
    STU * pb,*pf;
    pb=*p_head;//让pb指向头节点
    if(*p_head == NULL)//链表为空链表
    {
        printf("链表为空\n");
        return ;
    }
    while(strcmp(pb->name,name)!=0 && pb->next!=NULL)//循环查找要删除的节点
    {
        pf=pb;
        pb=pb->next;
    }
    if(strcmp(pb->name,name)==0)//找到了一个节点的num和num相等
    {
        if(pb == *p_head)//找到的节点是头节点
        {
            *p_head = pb->next;
        }
        else//找到的节点是普通节点
        {
            pf->next = pb->next;
        }
            free(pb);
    }
    else//没有找到咱们要删除的节点
    {
        printf("没有找到您要删除的节点\n");
    }
}
————————————————
版权声明:本文为CSDN博主「Eliasfp」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/peng_apple/article/details/79614518

 

单链表值删除节点(C语言环境下)

原文:https://www.cnblogs.com/XueQun/p/15122758.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!