📄 eg3.cpp
字号:
// eg3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
struct student
{
int nNumber;
int nScore;
student* pNext;
};
student* CreateNode()
{
// 1.申请内存
student* pTemp = new student;
pTemp->pNext = NULL;
// 2.填充数据
while (1)
{
printf("请输入编号和分数(逗号分割):\n");
flushall(); // scanf前必须调用!
if (2 != scanf("%d,%d",
&pTemp->nNumber,
&pTemp->nScore))
{
printf("输入错误,请重新输入!\n");
}
else
break;
}
// 3.返回节点
return pTemp;
}
/*
void AddToTail(student** ppHead,
student** ppTail,
student* pTemp)
{
if (*ppHead == NULL) // first node
{
*ppHead = pTemp;
*ppTail = pTemp;
}
else // others node
{
(*ppTail)->pNext = pTemp;
*ppTail = pTemp;
}
}
*/
void AddToTail(student*& pHead,
student*& pTail,
student* pTemp)
{
if (pHead == NULL) // first node
{
pHead = pTemp;
pTail = pTemp;
}
else // others node
{
pTail->pNext = pTemp;
pTail = pTemp;
}
}
// 遍历链表
void PrintList(student* pHead)
{
student* pTemp = pHead;
while (pTemp != NULL)
{
// 打印数据
printf("number:%d, score:%d\n",
pTemp->nNumber,
pTemp->nScore);
pTemp = pTemp->pNext; // 移动指针
}
}
int main(int argc, char* argv[])
{
student* pHead = NULL; // 头节点指针
student* pTail = NULL; // 尾节点指针
student* pTemp = NULL; // 临时节点指针
// 建立链表
while (1)
{
// 1.创建节点
pTemp = CreateNode();
if (pTemp->nNumber == 0)
break;
// 2.添加节点到链表尾
AddToTail(pHead, pTail, pTemp);
}
// 遍历链表
PrintList(pHead);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -