找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2493|回复: 0
收起左侧

II C语言之后的数据结构 1

[复制链接]
ID:60076 发表于 2014-4-29 20:14 | 显示全部楼层 |阅读模式
     到目前为止C语言告一段落快半个月了,总体来说通过几个月攻略C语言总算是把它们搞定了,包括C后期的多重指针、多维数组、文件的操作、预处理指令以及自定义的结构体struct、联合union、枚举enum等等。所以说到了目前为止可以脱离书本写C程序了,但是现在攻略的数据结构是一大难题,数据结构是一座很高的山,也是最难掌握的知识,又很重要,相当于编程核心,基本上所有编程语言都离不开它。通过了解了半个月,我认为难度比其他方面的应用像数据库Qracle、UC、VC、程序算法、QT、MFC都要大,事实也是如此,原因在于理论上很简单,但真的写起数据结构的程序就有点犯难了,不好理解的说。比如最近这些时写个比较基础的链表都练习了好几天,总是出错,各种问题,各种警告,要么就是很常见的段错误,看起来一个简单的链表都要写一百多行代码,除了主函数之外也就只有创建链表、删除链表、插入链表、输入输出链表函数,一共五个函数需要调用,更何况深入的还有置空链表、销毁链表、判断链表是否为空、计算链表元素个数、链表元素关系函数等等。看着它们心情实在是“太好了”,好到直接昏倒的地步。就一个没有双向循环的链表都这么纠结,更何况别的呢。
       数据结构常见的有:集合、一对一的线性结构、一对多的树形结构和多对多的图形结构,而最简单的就是线性结构了,换句话说线性结构的链表、堆栈和队列是最简单最基本的,很多人不得不吐槽了这还是最简单的,我晕吧。攻略完C语言之后数据结构我整体简单的看了看,理论还是蛮简单的,都通俗易懂,但是真的写程序的话还真是不好写啊!一对一的写起来都很困难,更何况以后的关系是一对多甚至多对多的元素关系。没办法级别不够,级别低的就是做不了级别高的事,而级别高的可以做级别低的事,这是我之前玩网游也好还是单机也好最喜欢说的一句话。练级就是这么产生的,所以也就不难理解为什么全世界的所有人无时不刻都在练自己的各种级别了。今天升一级,明天争取再升一级,很多练级狂最常说的话大概就是这了。
       线性结构是一对一的形式,存储方式是一个顺序的地址,这一点和数组一样,线性结构最常见的是堆栈、队列和链表。生活中的盖房子相当于就是堆栈,先从下面开始建起,然后再建上面的,于是高楼就建好了,反过来拆房子是从最高处开始拆最后拆一楼,楼层之间是一个接着一个的关系,堆栈就是这样的东西,先进后出,后进先出的原则,堆栈中从第一个元素开始,每个元素的指针指向下一个元素,反过来下一个元素的地址就是上一个元素的指针变量,于是程序中就形成了堆栈;而另一种生活中的排队就是队列,也是一个接着一个,前后之间都有关系,而且和堆栈不同的是先进先出,后进后出的关系,排列方式和堆栈一样,队列中从第一个元素开始,到最后一个元素为空,于是就构成了队列。链表相当于比之前的顺序表多了节点,相当于把线性表分成几组的模式,组和组之间是节点,而每组中的元素是顺序储存的,但组和组并不连接,地址是断开的,每一组的最后一个元素的指针指向下一组的第一个元素,因此产生了节点,因此使用链表更效率,但查找的效率却没有线性好(看得出所有东西都有缺点,没有完美的)。
       树形结构是一对多的形式,存储方式是按照树形排序的方式来存入连续的地址中,比如最常见的是前序排列、中序排列和后序排列,这个都好说,简单的要命(小学生都可以学会的),树形结构最常见的是二叉树,多叉树。现实中很多东西都是树形结构,比如家谱表、一颗树的树枝。这么好懂的东西,难就难在写程序,树的种类比起线性更加的多,而且更加的杂,程序更加的长,不仅仅和线性结构有一样的函数操作,而且还增加了新东西,总之比线性表更上一层,如果线性表程序都写不好,那这个就......呵呵,相当于加法不会去做乘法。而图形结构呢,多对多的形式,比如生活中的地图线路,比之前的树形结构更加复杂,程序的话就更不用说了,指针用着都累死你,处处都是指针,二级指针,网状结构的关系太多,所以指针也用的更频繁,乱指哈哈,都可以迷路了,简单的看了看相关的程序,更加晕。数据结构最难的应该就是它了,差不多把它能完全掌握的话数据结构也就非常高端大气上档次了。
       所以有时我在想数据结构理解就过吧,简简单单弄懂基本的程序就行了, 还是先攻略C++靠谱点。毕竟先会程序再会应用嘛。同理就像先会如何用烤箱,再才能烤出西点出来,前者是理论后者是应用,说起来还是做西点简单,需要的也就是体力而已,再要点小技巧,最主要的还是用心做就行了。而程序就不同,小技巧根本靠不住。要大技巧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表