单向链表之删除节点(C语言实现)「建议收藏」

单向链表之删除节点(C语言实现)「建议收藏」链表的创建查看删除节点就是将某一节点从链中摘除。将待删节点与其前一节点解除联系(中间或尾部)或本阶段删除(头节点),并释放相应空间(free)。删除的第一步是找到要删除的节点,同链表查找,如果找不到或链表为空,提示未找到,找到后根据情况删除此节点。删除节点两种情况:第一个节点,后面节点。步骤:1、链表为空:不用删除2、链表不为空:先循环找要删除的节点1)找到了1>找

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

链表的创建查看

删除节点就是将某一节点从链中摘除。

将待删节点与其前一节点解除联系(中间或尾部)或本阶段删除(头节点),并释放相应空间(free)。删除的第一步是找到要删除的节点,同链表查找,如果找不到或链表为空,提示未找到,找到后根据情况删除此节点。删除节点两种情况:第一个节点,后面节点。

步骤:

1、链表为空:不用删除

2、链表不为空:先循环找要删除的节点

1)找到了

1>找到的节点是头节点

被删除节点是第一个节点:只需使head指向第二个节点即可

单向链表之删除节点(C语言实现)「建议收藏」

2>找到的节点是普通节点

被删节点不是第一个节点:使被删节点的前一节点指向被删节点的后一节点即可

单向链表之删除节点(C语言实现)「建议收藏」

2)没找到

结构体节点:

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

Jetbrains全家桶1年46,售后保障稳定 demo:

1、
void 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");
    }
}

2、
void 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");
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/206730.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pytest运行_ios12清除缓存

    pytest运行_ios12清除缓存前言pytest运行完用例之后会生成一个.pytest_cache的缓存文件夹,用于记录用例的ids和上一次失败的用例。方便我们在运行用例的时候加上–lf和–ff参数,快速运行上一

  • 简聊 Session 与 Token 身份验证[通俗易懂]

    简聊 Session 与 Token 身份验证

  • UDP协议支持广播发送数据_tcp协议建立连接的过程

    UDP协议支持广播发送数据_tcp协议建立连接的过程UDP(用户数据报协议)是OSI(OpenSystemInterconnection,开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。目录什么是UDP协议?UDP协议数据传输原理DatagramPacket类DatagramSocket类UDP协议网络通信客户端服务器程序服务器端程序客户端程序Hello!大家好!我是灰小猿。之前和大家分享了使用TCP协议进行网络通信的过程,想了解的小伙伴可以看我的这篇文章《Java利.

  • vmware中安装centos_虚拟机系统安装教程

    vmware中安装centos_虚拟机系统安装教程一、前言最近有网友反应初学Linx不会安装,找了许多教程不是太全面,总会遇到一些要不是启动不了,要不是连不上网,各种问题,为了让大家能够顺利的安装,小乐写了一个非常详细的教程,让大家少入坑。二、背

  • 浏览器offsetWidth、clientWidth、scrollWith等总结

    浏览器offsetWidth、clientWidth、scrollWith等总结  对象尺寸会涉及width和height,我们以width为例,height则是一样的道理。  1、clientWidth:对象可见的宽度,不包括滚动条等边线,会随窗口的显示大小改变。  clientWidth = 元素width+padding  2、scrollWidth:实际内容的宽,不包括边线宽度,会随着对象中内容的多少改变。  无滚动时等于c…

  • mysql的可视化工具_Mysql可视化工具Navicat的基本使用

    mysql的可视化工具_Mysql可视化工具Navicat的基本使用一、写在前面的话相信大多数php初学者刚学习mysql的时候,应该都是在cmd黑窗口中进行一些基本sql的增删改查操作,但是在企业中几乎不会在黑窗口环境中进行sql的编写,主要有两点原因:1.界面不友好(虽然有点逼格)2.容易造成数据的误删除(不像女朋友没了可以再找),下面就给大家介绍mysql可视化工具navicat的常用的操作。至于怎么安装navicat相信大家都会,基本一路next,然后选…

    2022年10月26日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号