|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
学到小甲鱼老师讲链表的课程,根据小甲鱼老师55课的作业改变了一下,虽然代码写出来了,也能正常运行,但还是感觉稀里糊涂的,大家看看哪些地方还需要改进的,代码如下:
===============================================================- // 根据输入的学生个数,保存每个学生的学号和成绩
- #include<stdio.h>
- #include<malloc.h>
- #include<stdlib.h>
- typedef struct student // 创建结构体
- {
- int num; // 学号
- float sorce; // 分数
- struct student *pNext; // 指针域
- }NODE, *pNODE;
- // 函数声明
- pNODE create(void); // 功能:创建链表
- void print(pNODE pHead); // 功能:遍历链表并打印
- int main()
- {
- pNODE pHead = NULL; // 链表头
- pHead = create();
- print(pHead);
- return 0;
- }
- pNODE create(void)
- {
- int len; // 输入学生个数
- int i;
- int t_num; // 临时保存学号
- float t_sorce; // 临时保存分数
- pNODE pNew = NULL; // 新链表节点
- pNODE pHead = (pNODE) malloc(sizeof(NODE)); // 作为返回值
- pNODE p = pHead; // 临时指针变量(永远指向下一个节点)
- p->pNext = NULL; // 清空指针域
-
- if (NULL == pHead) // 检测判断
- {
- printf("内存分配失败,程序终止!\n");
- exit(-1);
- }
- printf("请输入学生的总数:\n");
- scanf("%d", &len);
- for (i=0; i<len; ++i)
- {
- printf("请输入第%d个同学的学号和成绩:(学号和成绩用逗号分隔)\n", i+1);
- scanf("%d,%f", &t_num, &t_sorce);
- pNew = (pNODE) malloc(sizeof(NODE)); // 开辟新节点
- if (NULL == pNew) // 检测判断
- {
- printf("内存分配失败,程序终止!\n");
- exit(-1);
- }
- pNew->num = t_num; // 传入学号
- pNew->sorce = t_sorce; // 传入分数
- p->pNext = pNew; // 保存节点指针
- pNew->pNext = NULL; // 清空指针域
- p = pNew; // 指向节点
- }
- return pHead;
- }
- void print(pNODE pHead)
- {
- int n = 1; // 学生个数计数
- pNODE p = pHead->pNext; // 临时指针变量指向下一个节点
- while (NULL != p)
- {
- printf("第%d个同学的学号:%5d 成绩:%5f\n", n, p->num, p->sorce);
- p = p->pNext; // 指向下一个节点
- n++;
- }
- return;
- }
- /*
- ==========================================================
- 本代码这Microsoft Visual Studio 6.0 能正常编译连接
- ==========================================================
- */
复制代码 |
|