当前位置: 首页 > article >正文

复习单向,双向链表,并且实现两种链表的增加和删除功能。

单链表头插

Linklist insert_head(datatype element,Linklist head)
{
    //创建新节点
Linklist s=create_node();
    if(NULL==s)
    return head;
s->data=element;

    //1,判断链表为空
    if(NULL==head)
    {
    head=s;
    }
    else //链表不为空
    {
    s->next=head;
    head=s;
    }

    return head;
}

单链表尾插

Linklist insert_rear(datatype element,Linklist head)
{
//创建新节点s
    Linklist s=create_node();
    if(NULL==s)
        return head;
       s->data=element;

//1,判断链表为空
    if(NULL ==head)
    {
        head=s;
    }
    else //链表不为空
    {
        //1,循环到最后一个节点
        Linklist p=head;
        while(p->next!=NULL)
        {
            p=p->next;
        }
        //2,在p后面插入s
        p->next=s;
    }
    return head;

}

单链表头删

Linklist delete_head(Linklist head)
{
    //1,判断链表为空
    if(NULL==head)
    {
        return head;
    }
    else //链表存在1个或多个节点
    {
        Linklist del=head;
        head=head->next;
        free(del);
        del=NULL;
    }

    return head;
}

 单链表尾删

Linklist delete_rear(Linklist head)
{
    //1,判断链表为空
    if(NULL ==head)
        return head;
    //2,判断链表只有一个节点
    if(NULL ==head->next)
    {
        free(head);head=NULL;
    }
    else //存在多个节点>=2
    {
        //3.找到倒数第2个节点
        Linklist del=head;
        while(del->next->next!=NULL)
        {
            del=del->next;
        }
        //4.删除del->next
        free(del->next);
        del->next=NULL;
    }
    return head;
}

双向链表节点头插

Doublelink double_insert_head(datatype element,Doublelink head)
{
    //创建新节点s
    Doublelink s=create_node();
    if(s==NULL)
        return head;
    strcpy(s->data,element);

    //1.判断链表为空
    if(NULL ==head)
        head=s;
    //2.存在多个节点>=1
    else
    {
        s->next=head;
        head->priv=s;
        head=s;
    }
    return head;
}

双向链表节点尾插

Doublelink doublelink_insert_rear(datatype element,Doublelink head)
{
    //创建新节点s
    Doublelink s=create_node();
    if(s==NULL)
        return head;
    strcpy(s->data,element);

    //1,没有节点
    if(NULL ==head)
        head=s;
    else
    {
        //找到最后一个节点
        Doublelink p=head;
        while(p->next!=NULL)
        {
            p=p->next;
        }
        //插入s
        p->next=s;
        s->priv=p;

    }
    return head;

}

双向链表节点头删

Doublelink delete_head(Doublelink head)
{
    //1,判断链表为空
    if(NULL==head)
        return head;
    //2,存在多个节点
    Doublelink q=head;
    head=head->next;
    if(head!=NULL)
        head->priv=NULL;
    free(q);
    q=NULL;
    return head;
}

双向链表节点尾删

Doublelink delete_rear(Doublelink head)
{
    //1,判断链表为空
    if(NULL ==head)
        return head;
    //2,只有一个节点
    if(head->next==NULL)
    {
        free(head);head=NULL;
    }
    else //>=2
    {
        //找到最后一个节点
        Doublelink p=head;
        while(p->next!=NULL)
        {
            p=p->next;
        }
        p->priv->next=NULL;
        free(p);
        p=NULL;
    }
    return head;
}


http://www.kler.cn/a/229373.html

相关文章:

  • 【STM32】HAL库USB实现软件升级DFU的功能操作及配置
  • 如何使用 Excel 进行多元回归分析?
  • 【Unity-Animator】通过 StateMachineBehaviour 实现回调
  • 深度学习中的学习率调度器(scheduler)分析并作图查看各方法差异
  • 像JSONDecodeError: Extra data: line 2 column 1 (char 134)这样的问题怎么解决
  • 神经网络
  • 阿木实验室SpireCV安装脚本
  • 解决Linux Shell脚本错误:“/bin/bash^M: bad interpreter: No such file or directory”
  • java执行可执行文件
  • kafka-splunk数据通路实践
  • Java注解与策略模式的奇妙结合:Autowired探秘
  • 算法学习——LeetCode力扣哈希表篇1
  • 在WebGL中创建动画
  • 深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之行存(一)
  • Dijkstra求最短路 I
  • Linux较常用的几个命令记录
  • sui move笔记
  • 总是提示安装不了tensorflow
  • 网络编程面试系列-02
  • 【方法论】费曼学习方法
  • IT行业证书的获取与价值:提升职业竞争力的关键
  • Django部署到服务器后无法获取到静态元素 The requested resource was not found on this server
  • C语言贪吃蛇详解
  • 软件系统架构的演变历史介绍
  • Windows显示空的可移动磁盘的解决方案
  • LeetCode、216. 组合总和 III【中等,组合型枚举】