要在单链表的最后插入节点,需要提及以下两种情况。

新节点添加到空链表中

新节点添加到链表的末尾

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. 【不带头节点的单链表】

    不带头节点的单链表 前言 一.结构体设计 二.函数实现 1. 初始化 2. 购买一个新节点 3. 头插 4. 尾插 5. 按位置插入 6. 头删 7. 尾删 8. 按位置删 总结 补充代码 前言 单链 ...

  2. 【 C 】在单链表中插入一个新节点的尝试(二)

    在上篇博文中:[ C ]在单链表中插入一个新节点的尝试(一),我们最后提到了如果向单链表的开头(起始位置)插入一个节点,上篇博文中给出的程序显然完成不了这任务. 这篇博文中,我们将解决这个问题,给出一 ...

  3. 【 C 】在单链表中插入一个新节点的尝试(一)

    根据<C和指针>中讲解链表的知识,记录最终写一个在单链表中插入一个新节点的函数的过程,这个分析过程十分的有趣,准备了两篇博文,用于记录这个过程. 链表是以结构体和指针为基础的,所以结构体和 ...

  4. 链表问题18——向有序的环形单链表中插入新节点

    题目 一个环形链表从头节点开始的顺序为不降序的顺序,也就是如1->2->2->2->3->4这样的链表叫做不降序,同时由最后的节点指回头节点.给定这个环形单链表的头节点h ...

  5. Coding Interview Guide -- 向有序的环形单链表中插入新节点

    [题目] 一个环形单链表从头节点head开始不降序,同时由最后的节点指回头节点.给定这样一个环形单链表的头节点head和一个整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后 ...

  6. 无头结点单链表的逆置_从无头单链表中删除节点及单链表的逆置

    题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点).请将该节点从单链表中删除. 解答: 典型的"狸猫换太子", 若要删除该 ...

  7. python链表删除尾部节点_python单链表中如何查找和删除节点?

    在之前的文章[python单链表中如何插入和输出节点?]中给大家介绍了单链表是什么,以及如何进行添加节点.输出所以节点.下面本篇文章给大家介绍如何查找和删除节点,希望对大家有所帮助. 如何从单链表中查 ...

  8. 【数据结构】8. 队列(带头节点的单链表实现)(完整代码实现:初始化、入队列、出队列、获取队头元素、获取队尾元素、获取队列中有效元素的个数、判空、销毁)

    目录 Queue.h Queue.c test.c Queue.h #pragma once //采用带头节点的单链表实现队列typedef int DataType;typedef struct Q ...

  9. 从无头单链表中删除节点 结构之法 4

    题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除. 分析与解答: 假设给定的指针为pCurrent,Node *pN ...

最新文章

  1. 定义一个圆类java用echo_正则表达式中圆括号的作用
  2. 如何改变一个按钮的位置
  3. JS调用PHP 和 PHP调用JS的方法举例
  4. 播放列表php代码,【求助】如何直接在Discuz! 代码 FLASH代码中添加优酷播放列表...
  5. python发音模块-python 利用pyttsx3文字转语音过程详解
  6. 银行业务队列简单模拟Java程序设计_PTA 数据结构 银行业务队列简单模拟
  7. 邮件合并保存为一个个单独的文档_你还在为考计算机二级烦恼吗? 基本操作步骤分享...
  8. 谷歌浏览器插件安装方法 谷歌浏览器导入插件的步骤
  9. ffmpeg将文件转码后推向服务器,FFmpeg转码服务器搭建
  10. MediaRecorder录制音频文件
  11. Vue----.stop、.prevent、.capture、.self用法以及.stop和.self的区别
  12. android 自动亮屏解锁,android锁屏唤醒并解锁屏幕实现方法
  13. NXP IMX8系列应用处理器介绍
  14. 如何给PDF文件加密?PDF文件加密操作步骤来了
  15. git via xkcd
  16. 十折交叉验证pythoniris_python机器学习-交叉验证(cross-vaildation)
  17. 关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结
  18. [文摘20110220]会理财胜过高薪水
  19. logback根据业务分开打印日志
  20. Labview Ethernetip TCP网口通讯欧姆龙PLC

热门文章

  1. 文件管理系统FastDFS详解
  2. 03_泰坦尼克号幸存者分析(下)
  3. 苹果鼠标怎么充电_无线充电器怎么用?看一次就会了!-装修攻略
  4. c语言例题功能作用,一篇C语言面试题的汇总
  5. vue进阶04-vue文档生成工具vuepress2
  6. 国仁网络资讯:抖音被降权、限流、警告了怎么办;触碰了抖音哪些违规行为。
  7. 无人驾驶车辆路径规划及轨迹跟踪控制学习笔记(2)
  8. 网易云音乐、QQ音乐一键下载工具(Go语言)
  9. 明解C语言电子书pdf下载
  10. 为什么你需要学 Go?