数据结构-单向链表解决学生录入问题
数据结构-单向链表
- 单向链表实现学生录入程序
- 通过main函数实现一切功能
- 通过调用函数实现
- 传送门结束
单向链表实现学生录入程序
将用户输入的不定个数的学生成绩按顺序编号并保存,以用户输入0作为录入结束标志,此时按编号顺序输出各学生录入成绩。
通过main函数实现一切功能
//
#include "stdafx.h" //其中包括了stdio和stdlib
struct student
{int grade;struct student*next; //指向结构体student类的指针
}; //记一下哈 定义结构体结尾要加分号// 定义了一个叫student的结构体,
typedef struct student Node; //使用typedef给student声明了别名
typedef Node* Ptr; //使用typedef给student结构体指针声明了别名int main()
{int i;Ptr head, previous, last; //定义三个student结构体类型指针 贴心翻译 头,先前,最后head = (Ptr)malloc(sizeof(Node)); //申请第一个结点的空间if (head == NULL) //如果申请失败,程序退出{return -1;}scanf_s("%d", &head->grade); //别问我为啥不用scanf,自行百度/滑稽previous = head;while (1){//申请当前最后一个结点的空间last = (Ptr)malloc(sizeof(Node));if (last == NULL){return -1;}previous->next = last; //链接结点scanf_s("%d", &last->grade);if (last->grade == 0) //如果录入的是0处理掉尾结点之后的结点,将尾节点指针next赋值为NULL{free(last);previous->next = NULL;break;}//如果不是0,previous指针获得当前的地址,last指针继续申请下一个节点空间previous = last;}for ( i = 0; head!=NULL; i++) //循环输出{printf_s("第%d个学生的成绩为%d\n", i + 1, head->grade);previous = head; //将输出后的结点地址赋值给previous指针,准备释放该空间head = head->next; //头指针指向下一结点,下一结点成为第一结点free(previous);}return 0;var foo = 'bar';
通过调用函数实现
#include "stdafx.h" //头文件 不说了struct student
{int grade;struct student *next;
};
typedef struct student Node;
typedef Node* Ptr;Ptr CreatLinkllist();
void Show(Ptr head);int main()
{Ptr head;head = CreatLinkllist();Show(head);return 0;
}
Ptr CreatLinkllist()
{Ptr head, previous, last;head = (Ptr)malloc(sizeof(Node));if (head == NULL){return NULL;}scanf_s("%d", &head->grade);previous = head;while (1){last = (Ptr)malloc(sizeof(Node));if (last == NULL){return NULL;}previous->next = last;scanf_s("%d", &last->grade);if (last->grade == 0){free(last);previous->next = NULL;break;}previous = last;}return head;
}void Show(Ptr head)
{int i;Ptr previous;for (i = 0; head != NULL; i++){printf_s("第%d个学生的成绩是%d\n", i + 1, head->grade);previous = head;head = head->next;free(previous);}
}
传送门结束
数据结构-单向链表解决学生录入问题相关推荐
- 数据结构单向链表线性结构_线性数据结构链表为何以及如何解释
数据结构单向链表线性结构 Imagine you have gone to a crowded place, say to a k-pop concert with your friends and ...
- 【单向链表】数据结构——单向链表的介绍与代码实现笔记
从今天开始将修炼数据结构专栏,将持续更新,分模块学习. 数据结构--单向链表 一.数据结构 1.什么是数据结构? 2.逻辑结构和物理结构 二.链表--线性结构 1.首先介绍下链表和数组的区别 2.链表 ...
- 简单数据结构——单向链表
恩,准备重最简单的东西复习和学习一遍.那就从数据结构开始吧. 我尽量用公司的代码标准来进行编码.希望对刚刚开始学习数据结构的有一些帮助吧. 使我的代码可以简单易懂. 我记得上数据结构的第一个程序就是链 ...
- 数据结构—单向链表(详解)
一.链表基础 链表是一种常见的数据结构,其中运用到了结构体指针,链表可以实现动态存储分配,换而言之,链表是一个功能强大的数组,可以在某个节点定义多种数据类型,可以实现任意的添加,删除,插入节点等.链表 ...
- 数据结构 | 单向链表学习总结
单向链表学习总结 简介 总结 链表介绍 链表定义 链表函数 计算链表的长度 将列表转换为链表 LeetCode:剑指 Offer 22. 链表中倒数第k个节点 双向链表学习总结:python | 双向 ...
- 数据结构--单向链表
单向链表的一种Go语言实现 package mainimport "fmt"type Node struct {no intname stringnext *Node }//实现尾 ...
- 数据结构——单向链表
链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成. 结点API设计 类名 N ...
- 数据结构——单向链表-双向链表
1.单向链表按位置修改 //按位置修改 int updata_pos(linklist *L,int pos,datatype new_e) {if(NULL==L||empty(L)||pos< ...
- 数据结构单向链表(C++)
head文件 #include<iostream> #define status int #define OK 1 #define ERROR 0 using namespace std; ...
最新文章
- asp.net程序性能优化的七个方面
- 爬虫-scrapy的中间件
- 社会大学的作业,活动篇
- 如何快速高效读懂1本书?|阅读
- ora-01950 对表空间无权限
- linux查找文件限制时间,Linux查找命令find与文件三种时间
- struct stat结构体简介
- pycharm中python版本_在 Pycharm(2019,.3)里配置 Anaconda3 的 Python 版本
- 秘钥协议及新兴密码学方向【7】
- Dockerfile 文件结构、docker镜像构建过程详细介绍
- 2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)
- [codewars] - int32 to IPv4 二进制十进制 ip地址转换
- 福昕pdf套件注册码激活
- 双三次插值算法的C++实现与SSE指令优化
- phpspider在PHP7环境下运行错误的解决办法
- 音视频中的帧I 帧,B帧,P帧,IDR帧理解
- INTEL CPU 内核漏洞问题该如何处理?
- 双线macd指标参数最佳设置_MACD指标参数设置成多少最好和使用技巧?
- python mysql实例_Python操作Mysql实例代码
- html5网页录音和语音识别