单链表的头插法和尾插法c语言实现

/*单链表的头插法和尾插法c语言实现*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
/*简单的定义一个链表节点的数据单元*/
typedef struct student_t
{
int num;
char name[SIZE];
struct student_t* pNext;
}studentList, *pStudentList;

/*定义一个全局的静态的链表头节点指针*/
static pStudentList g_pstStudentList = NULL;

/*创建一个学生信息的链表节点*/
pStudentList createaOneStudentListNode()
{
pStudentList pNewNode = NULL;
pNewNode = (pStudentList)malloc(sizeof(studentList));
return pNewNode;
}
/*在链表头插入数据节点*/
int addOneStudentToListHead(int num, char* name)
{
pStudentList pNewNode = NULL;
int result = 0;

if ((num < 0) || (name == NULL))
{
result = -1;
printf("error inoput parameter!\n");
return result;
}
pNewNode = createaOneStudentListNode();
pNewNode->num = num;
memcpy(pNewNode->name, name, strlen(name));
pNewNode->pNext = g_pstStudentList;
g_pstStudentList = pNewNode;
return result;
}
/*在链表尾部插入数据节点*/
int addOneStudentToListTail(int num, char* name)
{
pStudentList pTempHead = NULL;
pStudentList pTailNode = NULL;
pStudentList pNewNode = NULL;
int result = 0;

if ((num < 0) || (name == NULL))
{
result = -1;
printf("error input parameter!\n");
return result;
}
pTempHead = g_pstStudentList;
while(pTempHead)
{
if (pTempHead->pNext == NULL)
{
pTailNode = pTempHead;
}
pTempHead = pTempHead->pNext;

}
pNewNode = createaOneStudentListNode();
pNewNode->num = num;
memcpy(pNewNode->name, name, strlen(name));
pNewNode->pNext = NULL;
pTailNode->pNext = pNewNode;
return result;
}
/*输出整个链表中的学号信息,检查插入的是否正确,插入时没有考虑是否有相同学号*/
void printList()
{
pStudentList pTempHead = NULL;
pTempHead = g_pstStudentList;
while(pTempHead)
{
printf("studnet num = %d\n", pTempHead->num);
pTempHead = pTempHead->pNext;
}
}
/*释放整个链表的资源*/
void freeList()
{
pStudentList pTempHead = NULL;
pStudentList pFree = NULL;
int i = 0;
pTempHead = g_pstStudentList;
pFree = g_pstStudentList;

while(pTempHead)
{
pFree = pTempHead;
printf("free studnet num = %d\n", pTempHead->num);
pTempHead = pTempHead->pNext;
if (pFree != NULL)
{
printf("i = %d\n", i);/*测试是否正确释放资源*/
free(pFree);
}
++i;
}
}
int main()
{
/*构建头节点*/
char* cName = "allan";
g_pstStudentList = createaOneStudentListNode();
g_pstStudentList->num = 0;
memcpy(g_pstStudentList->name, cName, strlen(cName));
g_pstStudentList->pNext = NULL;

/*使用尾插法插入数据*/
char* cName1 = "allan1";
addOneStudentToListTail(1,cName1);

/*使用尾插法插入数据*/
char* cName2 = "allan2";
addOneStudentToListTail(2,cName2);

/*使用头插法插入数据*/
char* cName3 = "allan3";
addOneStudentToListHead(3,cName3);

/*输出当前链表中存储的学号,没有考虑学号的唯一性,假设输入的都是不同数字*/
printList();

/*使用完资源后进行释放资源,防止内存泄漏*/
freeList();
return 0;
}

 使用VS2008运行结果如下图所示:

 

转载于:https://www.cnblogs.com/moyaoyi/p/7253023.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ICLR认知科学@AI workshop一览

来源&#xff1a; 混沌巡洋舰今年ICLR2020顶会有一个特别有意思的专题&#xff0c; 叫认知科学与AI顶会专题。在当下深度学习愈发进入瓶颈期的时代&#xff0c;认知科学和AI的交叉成为大势所趋。一方面我们希望把认知科学或心理学的知识用起来直接指导AI&#xff0c;另一方面我…

谷歌AI公布新项目:未来你的宠物可能真的会是“机器”狗!

From: Tech Crunch; 作者&#xff1a;Iris????或许你曾留心过狗是怎么行走的——它们走起路来肌腱运动流畅&#xff0c;步履灵活&#xff0c;并不必去思考下一步要怎么走&#xff0c;走路这个动作是自然而然发生的事情。而同样的动作&#xff0c;机器狗能够处理得这样自然吗…

java王大拿谢大脚_《乡村爱情1》:“王大拿”赵本山有3大亮点,追谢大脚根本不算啥...

《乡村爱情》第一部其实导演并不是赵本山&#xff0c;那时候的他和该剧的导演张惠中是好友关系&#xff0c;里面的各大主演除了“王小蒙”王亚彬外其余都是以赵本山的徒弟为主&#xff0c;很多人都是冲着赵本山的名气来观看这部剧的。其实赵本山在《乡村爱情》第一部中饰演的“…

记忆的天空:智能进化三部曲

作者&#xff1a;钟振余&#xff0c;宁波大学 相对于人工智能的快速发展&#xff0c;人类对于生命智能的理解显得很肤浅。由于缺失大脑活动原理的理论指导&#xff0c;人们只能用知识考试去评判一个人的智能&#xff0c;用相当于几岁孩子的智能去比对某些高级动物的智能。事实上…

收藏!机器学习算法分类图谱及其优缺点综合分析

来源&#xff1a;必达智库近日&#xff0c;Coggle对各类机器学习算法进行了归纳整理&#xff0c;形成了一个较为完整的机器学习算法分类图谱&#xff0c;并对每一类算法的优缺点进行了分析。具体分类如下&#xff1a;正则化算法&#xff08;Regularization Algorithms&#xff…

StringBuilder String string.Concat 字符串拼接速度再议

首先看测试代码&#xff1a; 1 public class StringSpeedTest2 {3 private readonly static string _testStr "0123456789";4 5 public string StringAdd(int count)6 {7 string str string.Empty;8 for (i…

特斯拉Autopilot事故频发,真正意义上自动驾驶还要多久问世?

这并不是特斯拉 Autopilot 首次发生事故致死案例。来源&#xff1a;未来汽车科技的新能源汽车更替传统汽车是时代趋势&#xff0c;作为业内先驱&#xff0c;身处聚光灯下的特斯拉不可避免会受到大众关注&#xff0c;例如涉及它的每一次交通安全事件从不会在媒体报道中缺席。据外…

BDD 与DSL 入门

正文&#xff1a; Behavior Driven Development&#xff0c;行为驱动开发是一种敏捷软件开发的技术&#xff0c;它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。在了解Behavior Driven Development之前&#xff0c;先介绍Test-Driven Development(TDD)即测试…

CICC科普栏目|颠覆认知!看完这些图,你的世界观还好吗?

本文系网易新闻网易号“各有态度”特色内容部分资料来源于网络转自&#xff1a;超级数学建模接下来&#xff0c;仔细看下面的图与文字你会非常震撼……每天&#xff0c;地球上都有这么多的人在飞来飞去&#xff0c;就像下图中一样。▼图中圈圈里头的人口&#xff0c;比其他地区…

RISC-V会彻底改变计算吗?

来源&#xff1a;内容由半导体行业观察&#xff08;ID&#xff1a;icbank&#xff09;编译自「ACM」&#xff0c;谢谢。微处理器的开放指令集有望重塑计算&#xff0c;并引入新的、更强大的功能。现代计算机依靠许多元件来提供高速和高性能&#xff0c;但是很少有比一台精简的指…

干货|六维力和力矩传感器的技术与应用

来源&#xff1a;机器人大讲堂六维力和力矩传感器是一种提供三轴力和三轴力矩反馈的设备&#xff0c;并广泛应用在机器人控制、力学实验和科研等不同的场景中。不同于其他常见的测力仪器&#xff0c;六维力和力矩传感器可以测量完整的六自由度环境力数据&#xff0c;从而使其适…

Spark笔记——技术点汇总

Spark笔记——技术点汇总 目录 概况 手工搭建集群 引言 安装Scala 配置文件 启动与测试 应用部署 部署架构 应用程序部署 核心原理 RDD概念 RDD核心组成 RDD依赖关系 DAG图 RDD故障恢复机制 Standalone模式的Spark架构 YARN模式的Spark架构 应用程序资源构建…

人工智能正在推动芯片的复兴

来源丨Forbes作者丨Rob Toews编译丨科技行者半导体是数字时代的一项基础技术。美国硅谷的名字正是源自于此。过去半个世纪以来&#xff0c;计算技术的革命改变着社会的方方面面&#xff0c;而半导体技术正是这场革命的核心。自英特尔1971年推出全球第一个微处理器以来&#xff…

MEMS为何独领风骚?看完这篇秒懂!

显微镜下的MEMS结构&#xff08;注意图片上的刻度&#xff0c;是微米哦&#xff09;文章来源&#xff1a;硬件十万个为什么卡西欧早年就以电机马达、继电器等机电产品闻名。如今的卡西欧本身就是MEMS的制造商之一&#xff0c;用MEMS的思路解决传统机械手表遇到的问题是卡西欧的…

如何把我的Java程序变成exe文件?

JAVA是一种“跨平台”的语言&#xff0c;拥有“一次编写&#xff0c;处处运行”的特点&#xff0c;让它成为当今IT行业&#xff0c;必不可少的一门编程语言。每一个软件开发完成之后&#xff0c;应该大家都需要打包程序并发送给客户&#xff0c;常见的方式&#xff1a;java程序…

福布斯:混合现实未来的八大应用场景

来源&#xff1a;AR工业应用近日&#xff0c;福布斯发布了一篇关于混合现实未来的八个值得关注的领域和应用场景。文中提到&#xff1a;随着时间的推移&#xff0c;技术永远在不断进展&#xff0c;而未来技术中很可能是AR和VR的结合形式。有报告显示&#xff1a;2024年&#xf…

演化树,靠不住?挑战物种出现与灭绝速率的估算方法

来源&#xff1a;Nature自然科研原文作者&#xff1a;Mark Pagel以演化树形式绘制的图表能够显示物种之间的系统发育关系&#xff0c;这类图表被广泛用于估算新物种出现以及现存物种灭绝的速率&#xff0c;但一项新的研究对这种方法提出了质疑。科学家经常试图对生物的过去是什…

2020五大技术趋势一览!超自动化、人类增强技术、无人驾驶发展、机器视觉崛起、区块链实用化...

文章原载于 RichardLiu自动驾驶技术的发展近年来&#xff0c;自动驾驶技术一直在发展&#xff0c;特斯拉、英特尔等大公司在这一领域取得了长足的进展。虽然我们还没有达到L4级或L5级自动驾驶汽车的水平&#xff0c;但我们已经很接近了。为了解释每个级别的含义&#xff0c;下…

Facebook 开源聊天机器人Blender,经94 亿个参数强化训练,更具“人情味”

来源&#xff1a;AI前线作者 | Kyle Wiggers编译 | Sambodhi策划 & 编辑 | 刘燕不久前&#xff0c;Facebook 开源了号称是全球最强大的聊天机器人 Blender&#xff0c;它标志着 Facebook 在 AI 领域的新进展&#xff1a;新的聊天机器人不仅解决了此前聊天机器人的固有缺点&…

微服务go还是java,Java微服务 vs Go微服务,究竟谁更强!?

前言Java微服务能像Go微服务一样快吗&#xff1f;这是我最近一直在思索地一个问题。去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上&#xff0c;Mark Nelson和Peter Nagy就对此做过一系列基础的的测试用以比较。接下来就给大家介绍下。在程序员圈子里&#xff0c…