⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eg3.cpp

📁 C++课程更学习...对于初学者很有好出
💻 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 + -