admin管理员组文章数量:1794759
C语言单链表的头插法与尾插法
简单介绍一下本人自我总结的单链表头插法与尾插法 #前言:这是本人新手时学习单链表头插与尾插的总结,可能有些地方描述得不太好,如有错误,烦请大家指出,谢谢!
单链表头插法: 头插则是将新节点链接到链表的头结点的后面,即不断的在头节点和第一个节点之间插入新节点,每插入一个新节点,新节点就变为第一个节点,(可理解为插队)以此循环。 // (生成的链表结点次序与输入的顺序相反)
头插法模型图如下: 具体操作代码如下 : Struct Node{ Char data; Struct Node *next; } 先创建链表 struct Node *head = (struct Node *)malloc(sizeof(struct Node)); head -> next = NULL; 在新结点没有插入之前是<1>过程,即 head->next = first; first ->next = NULL; 在新结点插入后是<2>过程,即 P->next = head->next; head->next = P;PS:这里介绍一下“电子量产工具”项目视频里韦东山老师所用的头插法。
static PDispOpr g_DispDevs = NULL; // g_DispDevs是链表头(火车头),所谓链表就是一个指针,一开始它是空的 void RegisterDisplay(PDispOpr ptDispOpr) { /* 韦老师的写法,我对此的理解是:先建立一个头指针g_DispDevs(火车头), * 首先先明确一点g_DispDevs = NULL,就是说火车头没有连任何车厢,现在假设我有一个LCD相关的结构体要加到这个链表(火车),火车头连接第一节车厢。 * 过程: * 1.先确定你要添加的那节车厢的去向 * (就是你要添加的那节车厢要连去哪里,要是单链表,那最后一节车厢的去向是NULL) * 2.因为我认为韦老师写的是头插法,所以头指针,也就是火车头连向要加的那一节车厢。 * 附:头插则是将新节点链接到链表的头结点的后面,即不断的在头节点和第一个节点之间插入新节点, * 每插入一个新节点,新节点就变为第一个节点,(可理解为插队)以此循环。 */ ptDispOpr->ptNext = g_DispDevs; g_DispDevs = ptDispOpr; } 上述方法示意图如下:尾插法: 尾插则是将新节点链接到链表的尾部,// (生成的链表结点次序与输入的顺序一样)
尾插法示意图如下: 先创建链表 struct Node *head = (struct Node *)malloc(sizeof(struct Node)); head -> next = NULL; 在新结点没有插入之前是<1>过程,即 head->next = end; end->next = NULL; 在新结点插入后是<2>过程,(end是指向最后一个结点的指针)即 P->next = end->next; end->next = P; end = P; // 这时候的P已经为最后一个结点了,所以end 指针指向P 总结:头插和尾插的原理大体上都是三步:为新节点分配空间---->链接新节点---->给新节点输入数据版权声明:本文标题:C语言单链表的头插法与尾插法 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686890522a114925.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论