当前课程知识点:程序设计基础 > 第八章 非文本数据处理 > 8.1 将数据组织成链表 > 8.1.1 链表的基本概念
同学们好 我们在上一讲里头
学习了文件的基本的操作方法
然后呢也学习了字符串处理的各种基本方法
在这一讲里头我们将给大家介绍链表
哈希算法以及二进制数据文件的这种处理的内容
那大家首先来看一下这样的一个代码的片段
这个代码很熟悉 这就是我们上一章
王老师给大家讲的例子里头的四行代码
我们看在这些代码里头它有一个共同的地方
就是这四个数组它有二维的有一维的
那么它的类型呢也都不一样
但是它们有一个共同的数字
就是这里头都出现了600这个字
那这是一个什么样的数字呢
或者说这个数字代表了一个什么样的意义呢
经过上一章的学习
大家知道它其实是表示在这个
MOOC系统发来的日志文件里头
最多有多少个用户 那问题是这个用户的数目
或者600的这个所谓的最大值上限是怎么得到的呢
这个600实际上是通过数
全体记录当中不同的用户数来得到的
也就是对这个记录当中不同的用户进行统计来得到的
这样的一个统计的工作
我们通过事先另外的编写的一个程序来完成的
那有的时候如果我们不太容易
去统计得到这个用户的人数
比方说记录的文件非常大几百个G
那么统计一次呢耗时非常长 比方说一个小时
再或者呢这样的一个日志文件给你的时候
它其实还在继续的不断的更新
也就是你拿到的其实已经过时了
那么在这种情况下我们去处理数据的时候
用上一讲当中示例里头所说的
这样一个完成活动用户的统计
为了完成这样的一个任务
那我们就没有办法去预先估计说
这个里头一共是600人或者说1000人
那怎么来处理这个 当我们人数
难以预知的时候的这样的一个问题呢
那为了解决这个问题大家先看一个动画
大家刚才看过动画了 这是大家小时候
非常喜欢玩的老鹰抓小鸡的一个游戏
那我现在有一个问题要问大家
在小朋友在玩这个游戏的时候
他们有需要事先知道有多少人吗
很显然他们不需要
他们在游戏当中可以随时的加入新的小朋友
那么受小朋友的这种启发
那我们可以也用类似的形式
来组织我们从文件里头读入到的这种用户的信息
那么通过这种办法来组织数据 不就可以
解决这个人数里难以事先预知的这个问题了吗
就像大家现在看到的这种样子
那么这样的一种组织形式 我们就把它称为链表
那么在这个链表的节点里头 每一个都是由时间
编号它的这个操作login或者logout
以及呢下一个元素等
这样的四大类型元素组成的这个方框
代表的是一个结构类型的这个变量
这个上一讲我们也学习到了怎么来定义结构这种类型
那它的类型我们定义如下
就是一个struct Node里头有四项
那么在这个结构里头 它的这个next的成员
正是我们在第二讲的时候
曾经说过的这种指针类型 它是一个指向
同一结构类型变量的地址的一种指针
也就是下一个结构变量它所存放的单元的地址
把这个地址的值 存到当前的这个结构变量
的next的这种数据成员里头去
那么通过这种办法就可以从当前的这个节点
通过那个指针去找到下一个节点它在哪里
这样就像小朋友把它串起来了
那么有了这样的一个基本类型的定义之后
我们来看一下这个代码给大家讲解一下
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测