尾插法建立链表详解

尾插法建立链表详解尾插法 顾名思义 就是把新加入的节点插入到上一个节点的尾部 头插法是把新加入的节点插入到上一个节点的头部 next 存储下一个节点位置的地址 开始时 初始化定义头节点 head gt next NULL 表示头节点的下一个节点为空 就是该链表只有一个头节点 图形化表示为由于头插法要把每一个新加入的节点插入到上一个节点的尾部 所以需要定义一个指针 记录每次插入变换后的最后一个节点的指针域信息 r head 将头节点赋值给 r r 记录每次插入变换后尾部的信息申请一个节点

尾插法,顾名思义,就是把新加入的节点插入到上一个节点的尾部(头插法是把新加入的节点插入到上一个节点的头部),next存储下一个节点位置的地址,开始时,初始化定义头节点

head -> next = NULL;

表示头节点的下一个节点为空,就是该链表只有一个头节点,图形化表示为

尾插法建立链表详解

由于头插法要把每一个新加入的节点插入到上一个节点的尾部,所以需要定义一个指针,记录每次插入变换后的最后一个节点的指针域信息

r = head; 

将头节点赋值给r,r记录每次插入变换后尾部的信息

申请一个节点A1,将A1按照尾插法插入到链表当中,实现代码为

r -> next = p; r = p;

第一句代码 r -> next = p的意思是将 r (当前还是代表头节点的地址)的下一个节点指向p,图像表示形式为

尾插法建立链表详解

第二句代码 r = p的意思是将原本表示头部节点地址的指针赋值为新插入的A1,也就是说 r 当前表示为节点A1

尾插法建立链表详解

当插入节点A2时,依然执行这两行代码,由于r是上一个新插入的节点,所以A2插入到了A1的尾部

尾插法建立链表详解

插入后同样将r赋值给当前插入节点的地址

尾插法建立链表详解

不断地执行上述过程,把新来的节点插入到上一个尾部,把最后一个节点的next值赋为空,实现尾插法代码的实现

完整代码如下

#include 
  
    #include 
   
     typedef int Elemtype; //结构体的定义 struct LNode{ Elemtype data;//数据域,存储数据 struct LNode *next;//指针域,存储指针,存放后继节点信息 }; typedef struct LNode* LNodePtr;//定义结构体指针型变量,将结构体指针等价于Linklist typedef struct LNode LNode1; //尾插法建立链表 LNodePtr CreateListTail(int n){ struct LNode l1; LNodePtr p; LNodePtr r; int i; struct LNode* L = (struct LNode*)malloc(sizeof(struct LNode)); L->next = NULL; L->data = 0; r = L; for(i = 0; i < n; i ++){ p = (struct LNode*)malloc(sizeof(struct LNode));//每次动态申请一个结构体空间存储 p->data = i; r->next = p; r = p; } r->next = NULL; return L; } //链表的遍历输出 void TraverseList(LNodePtr L){ LNodePtr p, q; p = L;//将头指针赋值给p while(p->next != NULL){ q = p->next; printf("%d\n", q->data); p = p->next; } } int main() { LNodePtr l1 = CreateListTail(5); TraverseList(l1); return 0; } 
    
  

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222030.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午4:43
下一篇 2026年3月17日 下午4:43


相关推荐

  • 书单(含资源链接,快撸!)

    书单(含资源链接,快撸!)撸资源python开发笨办法”学Python(第3版)Python.编写高质量Python代码的59个有效方法提取码:3vk4编写高质量代码改善python程序的91个建议利用Pytho

    2022年8月4日
    12
  • java校验json格式_json格式校验

    java校验json格式_json格式校验C语言json格式校验最近用到json格式数据传输信息,在C语言中使用cjson解析json字符串,若json格式不正确,会使整个进程直接挂掉。想到能否在解析前先进行格式校验,通过后再解析,查找资料,网上有现成源码,网址:http://www.json.org/JSON_checker/主要用到两个文件JSON_checker.c和JSON_checker.h,具体用法可以参考main.c。这里参考了博客:C语言如何检测json格式的数据合法性中的用法,并加以改进。在官网中提供了json检查的测试文

    2025年8月1日
    4
  • linux partprobe命令

    linux partprobe命令主机自带硬盘超过 300GB 目前只划分使用了 3 个主分区 不到 70GB 如下 root db2 df h nbsp FilesystemSi Mountedon nbsp dev sda129G3 7G nbsp 24G14 nbsp dev sda229G nbsp 22G5 2G81 oracle nbsp tmpfs nbsp nbsp nbsp 2 0G nbsp nbsp nbsp 02 0G nbsp 0 dev

    2026年3月26日
    2
  • pytorch的安装及其在pycharm中的使用「建议收藏」

    pytorch的安装及其在pycharm中的使用「建议收藏」1.首先配置Anaconda虚拟环境在AnacondaPrompt中输入condacreate-npytorchpython==3.72.在该环境中安装pytorch因为前面已经安装了cuda10.0.130和cudnn,安装与之匹配的pytorch版本,官网中寻找,但是官网的貌似不太对,最后看的是这个回答pipinstalltorch==1.2.0torchvision==0.4.0-fhttps://download.pytorch.org/whl/torch_stab

    2022年8月25日
    10
  • Quartz与Spring集成—— SchedulerFactoryBean的初始化分析「建议收藏」

    Quartz与Spring集成—— SchedulerFactoryBean的初始化分析「建议收藏」Quartz是一个开源的定时调度框架,支持集群部署。我们可以通过其JavaAPI来使用它,或者通过Spring来配置与管理,也可以结合使用两种方式。本文重点分析Quartz与Spring集成时的初始化过程。

    2022年5月24日
    113
  • opengl和directx渲染有什么区别(directx怎么打开)

    原文地址:http://tieba.baidu.com/p/2018728460?see_lz=1OpenGL只是图形函数库。 DirectX包含图形,声音,输入,网络等模块。 单就图形而论,DirectX的图形库性能不如OpenGL OpenGL稳定,可跨平台使用。但OpenGL多需要显卡支持. ———————————-…

    2022年4月13日
    144

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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