c语言在尾部添加新节点,在单链表最后插入节点
要在单链表的最后插入节点,需要提及以下两种情况。
新节点添加到空链表中
新节点添加到链表的末尾
1. 新节点添加到空链表中
如果满足条件(head == NULL)。 因此,只需要在C语言中使用malloc语句为新节点分配空间。数据和节点的链接部分通过使用以下语句来设置。
ptr->data = item;
ptr -> next = NULL;
因为,ptr是插入链表中的唯一节点,因此需要使链表的头指针指向这个新节点,通过使用以下语句来完成。
Head = ptr
2. 新节点添加到链表的末尾
如果条件head = NULL失败,因为head不为null。需要声明一个临时指针temp才能遍历链表。temp指向链表的第一个节点。
temp = head
然后,使用以下语句遍历整个链表:
while (temp -> next != NULL){
temp = temp -> next;
}
在循环结束时,temp将指向链表的最后一个节点。 现在,为新节点分配空间,并将项目分配给其数据部分。 因为,新节点将成为链表的最后一个节点,因此新节点下一链接部分需要指向null。 使temp节点的下一链接部分(当前是链表的最后一个节点)指向新节点(ptr)。
temp = head;
while (temp -> next != NULL)
{
temp = temp -> next;
}
temp->next = ptr;
ptr->next = NULL;
算法
第1步:IF PTR = NULL
写OVERFLOW
转到第1步
[结束]
第2步:设置NEW_NODE = PTR
第3步:SET PTR = PTR - > NEXT
第4步:设置NEW_NODE - > DATA = VAL
第5步:设置NEW_NODE - > NEXT = NULL
第6步:设置PTR = HEAD
第7步:重复第8步,同时PTR - > NEXT != NULL
第8步:SET PTR = PTR - > NEXT
[循环结束]
第9步:SET PTR - > NEXT = NEW_NODE
第10步:退出
C语言示例代码 -
#include
#include
void lastinsert(int);
struct node
{
int data;
struct node *next;
};
struct node *head;
void main()
{
int choice, item;
do
{
printf("\nEnter the item which you want to insert?\n");
scanf("%d", &item);
lastinsert(item);
printf("\nPress 0 to insert more ?\n");
scanf("%d", &choice);
} while (choice == 0);
}
void lastinsert(int item)
{
struct node *ptr = (struct node*)malloc(sizeof(struct node));
struct node *temp;
if (ptr == NULL)
{
printf("\nOVERFLOW");
}
else
{
ptr->data = item;
if (head == NULL)
{
ptr->next = NULL;
head = ptr;
printf("\nNode inserted");
}
else
{
temp = head;
while (temp->next != NULL)
{
temp = temp->next;
}
temp->next = ptr;
ptr->next = NULL;
printf("\nNode inserted");
}
}
}
执行上面代码,得到类似下面的结果 -
Enter the item which you want to insert?
12
Node inserted
Press 0 to insert more ?
0
Enter the item which you want to insert?
23
Node inserted
Press 0 to insert more ?
2
¥ 我要打赏
纠错/补充
收藏
上一篇:链表
下一篇:双链表
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。
c语言在尾部添加新节点,在单链表最后插入节点相关推荐
- 【不带头节点的单链表】
不带头节点的单链表 前言 一.结构体设计 二.函数实现 1. 初始化 2. 购买一个新节点 3. 头插 4. 尾插 5. 按位置插入 6. 头删 7. 尾删 8. 按位置删 总结 补充代码 前言 单链 ...
- 【 C 】在单链表中插入一个新节点的尝试(二)
在上篇博文中:[ C ]在单链表中插入一个新节点的尝试(一),我们最后提到了如果向单链表的开头(起始位置)插入一个节点,上篇博文中给出的程序显然完成不了这任务. 这篇博文中,我们将解决这个问题,给出一 ...
- 【 C 】在单链表中插入一个新节点的尝试(一)
根据<C和指针>中讲解链表的知识,记录最终写一个在单链表中插入一个新节点的函数的过程,这个分析过程十分的有趣,准备了两篇博文,用于记录这个过程. 链表是以结构体和指针为基础的,所以结构体和 ...
- 链表问题18——向有序的环形单链表中插入新节点
题目 一个环形链表从头节点开始的顺序为不降序的顺序,也就是如1->2->2->2->3->4这样的链表叫做不降序,同时由最后的节点指回头节点.给定这个环形单链表的头节点h ...
- Coding Interview Guide -- 向有序的环形单链表中插入新节点
[题目] 一个环形单链表从头节点head开始不降序,同时由最后的节点指回头节点.给定这样一个环形单链表的头节点head和一个整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后 ...
- 无头结点单链表的逆置_从无头单链表中删除节点及单链表的逆置
题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点).请将该节点从单链表中删除. 解答: 典型的"狸猫换太子", 若要删除该 ...
- python链表删除尾部节点_python单链表中如何查找和删除节点?
在之前的文章[python单链表中如何插入和输出节点?]中给大家介绍了单链表是什么,以及如何进行添加节点.输出所以节点.下面本篇文章给大家介绍如何查找和删除节点,希望对大家有所帮助. 如何从单链表中查 ...
- 【数据结构】8. 队列(带头节点的单链表实现)(完整代码实现:初始化、入队列、出队列、获取队头元素、获取队尾元素、获取队列中有效元素的个数、判空、销毁)
目录 Queue.h Queue.c test.c Queue.h #pragma once //采用带头节点的单链表实现队列typedef int DataType;typedef struct Q ...
- 从无头单链表中删除节点 结构之法 4
题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除. 分析与解答: 假设给定的指针为pCurrent,Node *pN ...
最新文章
- 定义一个圆类java用echo_正则表达式中圆括号的作用
- 如何改变一个按钮的位置
- JS调用PHP 和 PHP调用JS的方法举例
- 播放列表php代码,【求助】如何直接在Discuz! 代码 FLASH代码中添加优酷播放列表...
- python发音模块-python 利用pyttsx3文字转语音过程详解
- 银行业务队列简单模拟Java程序设计_PTA 数据结构 银行业务队列简单模拟
- 邮件合并保存为一个个单独的文档_你还在为考计算机二级烦恼吗? 基本操作步骤分享...
- 谷歌浏览器插件安装方法 谷歌浏览器导入插件的步骤
- ffmpeg将文件转码后推向服务器,FFmpeg转码服务器搭建
- MediaRecorder录制音频文件
- Vue----.stop、.prevent、.capture、.self用法以及.stop和.self的区别
- android 自动亮屏解锁,android锁屏唤醒并解锁屏幕实现方法
- NXP IMX8系列应用处理器介绍
- 如何给PDF文件加密?PDF文件加密操作步骤来了
- git via xkcd
- 十折交叉验证pythoniris_python机器学习-交叉验证(cross-vaildation)
- 关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结
- [文摘20110220]会理财胜过高薪水
- logback根据业务分开打印日志
- Labview Ethernetip TCP网口通讯欧姆龙PLC