下拉菜单实现树状结构_C/C++编程笔记:浅析大学课程—数据结构

对于计算机行业,说到数据处理,就不得不提到数据结构,它也是对软件开发和考研都有非常非常重要作用的一门课程。

dfa827add7f0d86671d9ce53f2a3fa11.png

那么什么是数据结构?在这个问题之前,我们先来研究另外一个问题:计算机的作用是什么?

可以这样简单的总结为:计算机的作用就是通过各种各样的程序,处理形式多样的数据。

这里有两个关键字,一个是数据,一个是处理。

a3234de9dbcbf807d2dfa61a19dc5ba8.png

所以我们可以进一步思考:我们要处理的数据又有哪些具体的形式?对于某种形式的数据可以进行怎样的处理?

假如,我们想要开发一个图书馆的图书管理系统。联想我们提及的关键字,一个是数据,一个是处理。显然,我们需要面对的数据就是图书馆中各种各样的图书信息,而这些藏书的信息可以被总结归纳为一张表格。

而我们拿到这样一张表格,面对浩如烟海的藏书信息,我们能够进行什么处理?

对于一个图书管理系统,我们所期待的数据处理,主要包括:输入、输出、查询、排序……

具体到某一种操作,比如说顺序查找、折半查找、索引查找等等,这些处理如何实现呢?或者说:这些操作的算法如何呢?

cc402f24d23412d0eba720fd9afb0d95.png

考虑好要处理的数据,考虑好操作的实现方式,再结合语言基础,把中文表述翻译成C语言,其实就是我们写程序的过程。

从某种角度上看来,程序就是算法加数据结构。

再比如,开发一个学生信息管理系统。处理的数据就变成了学生对应的信息,但是对这些数据想要进行的操作还是换汤不换药,无非就是增删改查操作。从本质上讲,这个系统和图书管理其实就是一回事。

从这两个简单的例子里面,应该可以明显地察觉到:我们所做的第一件事情,其实就是把实际问题抽象为数据模型。

f37b69f484d1213e69fc30f476e1bc77.png

只不过这种数学模型不是方程组,不是微分方程,而是一张表格,里面填满了我们关心的数据指标,或者是一张图,各个元素之间有某种指向,可以研究指向的规律。

经研究发现,从外表上形式千差万别的数据,如果按照数据间的邻接关系来划分,所有的数据一定可以归为四种结构之一:

(1)线性结构这是一组数据的集合,它们之间存在这样一种邻接关系,第一条数据无前导,最后一条数据无后继,中间所有的元素满足一前导一后继的条件。

f41d9e0dccb46dd1b0dad07f8e7c7353.gif

(2)树状结构用图示的方法表示像是一个家谱图,圆圈可以表示数据,而连线表示数据之间的邻接关系。根据层次的不同,把数据分为前后。对树状结构,有一个最明显的特征,最高的层次只有一个节点,它被称为树的根;对于中间层次,它只有一个前导,而可以有多个后继;对于最后一个层次,它同样也是只有一个前导,但是没有后继,也被形象地称为叶子。

(3)图结构(网状结构)用图示的方法表示更像是一个地图,最明显的特征是对于每一个节点而言,都有可能有多个前导多个后继。

(4)集合结构对于每一条数据而言,两两之间都没有邻接关系,所有数据散落在表格之中,每一条数据既无前导,也没有后继。

e2e510ec5279a44bd009018d8ab92ac0.png


学习数据结构,第一个步骤就是把繁杂的实际问题抽象为可以处理的数据,而数据之间的关系又属于这四种之一:一前导一后继、一前导多后继、多前导多后继、无前导无后继。

所以最后呢,就希望大家能够通过专业知识的学习,培养一种理论结合实际的联想,有一种敏锐的直觉,通过事件快速定位所学知识。

感谢阅读,学习使人强大!

自学C/C++编程难度很大,如果你想在大学更快提升自己的编程能力和编写项目的水平,欢迎一起共同成长!

C语言C++编程学习交流圈子,关注+私信【C/C++编程】微信公众号:C语言编程学习基地

有一些源码和资料分享,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!

23a9e1aaaf260cdb93490dd8d2c1b184.png
e5000e8056753610f2d71b1ce07238af.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值