单链表的头插法和尾插法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,一经查实,立即删除!

相关文章

torry的困惑java代码_Java实现 蓝桥杯VIP 算法提高 Torry的困惑(提高型)

算法提高 Torry的困惑(提高型)时间限制&#xff1a;1.0s 内存限制&#xff1a;512.0MB问题描述Torry从小喜爱数学。一天&#xff0c;老师告诉他&#xff0c;像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题&#xff0c;前10、100、1000、10000……个质数的乘积是多少…

ICLR认知科学@AI workshop一览

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

MySql某一列累计查询

问题&#xff1a;有一列数据&#xff0c;需要累计显示出来 比如&#xff1a;id salary 查询结果&#xff1a;id salary sumSalary 1 10000 1 10000 10000 2 20000 2 20000 30000 3 30000 3 30000 6…

java中一个线程最小优先数_Java线程的优先级

Java线程可以有优先级的设定&#xff0c;高优先级的线程比低优先级的线程有更高的几率得到执行(不完全正确&#xff0c;请参考下面的“线程优先级的问题“)。记住当线程的优先级没有指定时&#xff0c;所有线程都携带普通优先级。优先级可以用从1到10的范围指定。10表示最高优先…

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

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

Sass基础知识及语法

sass Sass是一款强化css的辅助工具&#xff0c;他在css语法中的基础上增加了变量&#xff08;variables&#xff09;、嵌套&#xff08;nested rules&#xff09;、混合&#xff08;mixns&#xff09;、导入&#xff08;inline impoarts&#xff09;等高级功能&#xff0c;这些…

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

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

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

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

day27 CRM delete action 嵌入CRM

课程目录:deleteactionpop up window嵌入crm项目权限&#xff08;未讲&#xff09;学员交作业发邮件 代码路径&#xff1a;https://github.com/liyongsan/git_class/tree/master/day27/LuffyCRM 权限预习&#xff1a;http://www.cnblogs.com/alex3714/articles/6661911.html 转…

java中 若干,Java中的随机数发生器。产生若干的复杂性

I am aware that Java uses a Linear congruential generator. My question is- what is the complexity of generating a random number? How do you perform such analyses?解决方案The complexity of generating a random number is O(1). Do you mean "what are its…

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

来源&#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…

mysql查询数据为0的所有字段6_MySQL8.0 初级学习笔记(六)查询数据

MySQL8.0 初级学习笔记(六)查询数据MySQL8.0 初级学习笔记(六)查询数据查询有多种方法&#xff1a;单表查询&#xff0c;使用集合函数查询&#xff0c;连接查询&#xff0c;子查询&#xff0c;合并查询结果&#xff0c;为表和字段取别名&#xff0c;使用正则表达式查询一、单表…

特斯拉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;比其他地区…

python indices_python numpy triu_indices函数

numpy.triu_indices返回函数的上三角矩阵numpy.triu_indices(n,k0,mNone)[source]Return the indices for the upper-triangle of an (n, m) array.Parameters: n : intThe size of the arrays for which the returned indices will be valid.k : int, optionalDiagonal offse…

django-xadmin使用之更改菜单url

环境&#xff1a;xadmin-for-python3 python3.5.2 django1.9.12 1. 在模块的adminx.py文件中增加以下代码&#xff1a; class AdminSettings(object):site_title XXX Data Centersite_footer XXX Inc.# menu_style accordion# 菜单设置def get_site_menu(self):return ({tit…

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

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

如何将随机数存入数组java_JAVA怎么把随机数赋给数组

JAVA怎么把随机数赋给数组来源:互联网 宽屏版 评论2012-05-29 12:50:14分类: 电脑/网络 >> 程序设计 >> 其他编程语言问题描述:double aMath.random();可以产生个随机数&#xff0c;怎么产生100个这样的随机数然后赋值给数组并输出呢&#xff1f;参考答案:public…