数据结构-单向链表

  • 单向链表实现学生录入程序
  • 通过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);}
}

传送门结束

数据结构-单向链表解决学生录入问题相关推荐

  1. 数据结构单向链表线性结构_线性数据结构链表为何以及如何解释

    数据结构单向链表线性结构 Imagine you have gone to a crowded place, say to a k-pop concert with your friends and ...

  2. 【单向链表】数据结构——单向链表的介绍与代码实现笔记

    从今天开始将修炼数据结构专栏,将持续更新,分模块学习. 数据结构--单向链表 一.数据结构 1.什么是数据结构? 2.逻辑结构和物理结构 二.链表--线性结构 1.首先介绍下链表和数组的区别 2.链表 ...

  3. 简单数据结构——单向链表

    恩,准备重最简单的东西复习和学习一遍.那就从数据结构开始吧. 我尽量用公司的代码标准来进行编码.希望对刚刚开始学习数据结构的有一些帮助吧. 使我的代码可以简单易懂. 我记得上数据结构的第一个程序就是链 ...

  4. 数据结构—单向链表(详解)

    一.链表基础 链表是一种常见的数据结构,其中运用到了结构体指针,链表可以实现动态存储分配,换而言之,链表是一个功能强大的数组,可以在某个节点定义多种数据类型,可以实现任意的添加,删除,插入节点等.链表 ...

  5. 数据结构 | 单向链表学习总结

    单向链表学习总结 简介 总结 链表介绍 链表定义 链表函数 计算链表的长度 将列表转换为链表 LeetCode:剑指 Offer 22. 链表中倒数第k个节点 双向链表学习总结:python | 双向 ...

  6. 数据结构--单向链表

    单向链表的一种Go语言实现 package mainimport "fmt"type Node struct {no intname stringnext *Node }//实现尾 ...

  7. 数据结构——单向链表

    链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成. 结点API设计 类名 N ...

  8. 数据结构——单向链表-双向链表

    1.单向链表按位置修改 //按位置修改 int updata_pos(linklist *L,int pos,datatype new_e) {if(NULL==L||empty(L)||pos< ...

  9. 数据结构单向链表(C++)

    head文件 #include<iostream> #define status int #define OK 1 #define ERROR 0 using namespace std; ...

最新文章

  1. asp.net程序性能优化的七个方面
  2. 爬虫-scrapy的中间件
  3. 社会大学的作业,活动篇
  4. 如何快速高效读懂1本书?|阅读
  5. ora-01950 对表空间无权限
  6. linux查找文件限制时间,Linux查找命令find与文件三种时间
  7. struct stat结构体简介
  8. pycharm中python版本_在 Pycharm(2019,.3)里配置 Anaconda3 的 Python 版本
  9. 秘钥协议及新兴密码学方向【7】
  10. Dockerfile 文件结构、docker镜像构建过程详细介绍
  11. 2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)
  12. [codewars] - int32 to IPv4 二进制十进制 ip地址转换
  13. 福昕pdf套件注册码激活
  14. 双三次插值算法的C++实现与SSE指令优化
  15. phpspider在PHP7环境下运行错误的解决办法
  16. 音视频中的帧I 帧,B帧,P帧,IDR帧理解
  17. INTEL CPU 内核漏洞问题该如何处理?
  18. 双线macd指标参数最佳设置_MACD指标参数设置成多少最好和使用技巧?
  19. python mysql实例_Python操作Mysql实例代码
  20. html5网页录音和语音识别

热门文章

  1. 65% 的程序员竟都是自学成才?
  2. android 高级之旅 (十三) 真! 如何判断去电是否接通? 已解决!
  3. 嫌官方文档太烂?TensorFlow 开源工具书,助你快速上手开发!
  4. 反思既往 也同时送给屌丝程序员一些小福利
  5. wordpress AVADA主题实现图片菜单导航的方法
  6. eclipse中日志无法打印到文件中的解决办法
  7. 有趣的Python基础教程(上)
  8. 编译原理 LR分析(主要是LR(0)分析)
  9. C语言制作一个五子棋小游戏【附代码】
  10. linux zsh ping命令,扣丁学堂Linux培训简述Linux使用zsh提高效率的5条建议