文章目录
前言
本篇文章我们接着上一篇文章讲解。
一、尾添加
上篇文章我们讲到尾添加一个学生信息,这篇文章我们详细讲述如何尾添加。
//添加一个学生信息
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.存在多个节点
这一步稍微复杂一点,我们用图片来说明。
只有一个节点时头和尾都指向第一个节点
添加一个节点
头指针保持不动,尾指针的下一个指针指向下一个节点,尾节点移动到下一个节点这样就把他们链接起来了。
总结
大家有什么看不懂的地方可以留言或者私信。