C语言项目实战学生管理系统(2)

举报
yd_274589494 发表于 2023/07/22 09:48:08 2023/07/22
【摘要】 @TOC 前言本篇文章我们接着上一篇文章讲解。C语言项目实战学生管理系统(1) 一、尾添加上篇文章我们讲到尾添加一个学生信息,这篇文章我们详细讲述如何尾添加。//添加一个学生信息void AddstuMSG(char arrStunum[10], char arrStuname[10], int iStuSorce);`//添加一个学生信息void AddstuMSG(char arrStu...

@TOC

前言

本篇文章我们接着上一篇文章讲解。

C语言项目实战学生管理系统(1)

一、尾添加

上篇文章我们讲到尾添加一个学生信息,这篇文章我们详细讲述如何尾添加。

//添加一个学生信息
void AddstuMSG(char arrStunum[10], char arrStuname[10], int iStuSorce);`


//添加一个学生信息
void AddstuMSG(char arrStunum[10], char arrStuname[10], int iStuSorce)
{
	//第一步检验参数合法性
	if (0 == arrStunum[10] || 0 == arrStuname[10] || iStuSorce < 0)
	{
		printf("学生信息输入错误!\n");
		return;        //信息错误跳出函数
	}

	//逻辑
	//创造一个节点
	STUNODE *pTemp = malloc(sizeof(STUNODE));
	//节点成员赋初始值
	strcpy(pTemp->arrStunum, arrStunum);   //学生学号和姓名都是字符串用strcpy进行赋值
	strcpy(pTemp->arrStuname, arrStuname);
	pTemp->iStuSorce = iStuSorce;
	pTemp->pNext = NULL;     //指向下一个节点的指针赋值为空

	//接在链表上
	if (NULL == g_pHead || NULL == g_pEnd) //只有一个节点
	{
		g_pHead = pTemp;  //用头和尾指向新链表的地址
		//g_pEnd = pTemp;
	}
	else      //存在多个节点
	{
		g_pEnd->pNext = pTemp; //来一个新的节点只要让尾的下一个指向新的节点(链接)
		//g_pEnd = pTemp; //向后移动
	}
	g_pEnd = pTemp;
}


在添加节点时我们分为两种情况
1.只有一个节点
首先判断头指针和尾指针是否指向NULL,如果指向的是NULL那么说明只有一个节点,只有一个节点链接就非常简单了把头指针和尾指针都指向PTemp就完成了链接。
2.存在多个节点
这一步稍微复杂一点,我们用图片来说明。
只有一个节点时头和尾都指向第一个节点
在这里插入图片描述

添加一个节点
在这里插入图片描述

头指针保持不动,尾指针的下一个指针指向下一个节点,尾节点移动到下一个节点这样就把他们链接起来了。

总结

大家有什么看不懂的地方可以留言或者私信。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。