数据结构绪论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章你我无猜,四下里管中窥豹
每学一门新事物,就像重回童年,那种懵懂那种好奇,令我四处窥望。大千世界,变化万千,我童年的每一眼都如管中窥豹,只见一斑。现在想来,这种好奇是美丽的,它会让我不自觉地爱上对方。初恋,便是人生初见。
1.谈起我心爱的《数据结构》
遥想20年前……先泪崩20秒——致我们终将失去的学妹!
——老师,不是《致我们终将失去的青春》吗?
——有多远死多远。没有学妹,青春有毛用啊?没有和学妹绯闻的青春都不是青春,至少是不完整的。
——老师,请节哀!
——人生自是有情痴,此恨不关风和月。
——老师,要不我们先下课吧!好方便您去寻找旧爱。
——想得美!每当数据结构上课铃响的时候,我就化悲痛为力量。好了,眼泪咽回去了,初恋的都不懂爱情,把这一页揭过去,我们继续来讨论母猪的产后护理问题——我们讲到哪啦?
话说当年,本小生风华正茂,挥斥方遒,左手一把折扇,右手一只鸟笼。有个基友叫国城,见到我就倾倒,从上个世纪开始,一直追求我到今天,我打死都不从他。爱我的人为我付出一切,我却为我爱的人狂乱心碎。同学们哪,一失足成千古恨啊,当年就因为我夜长梦多,数据结构课上一不小心继续盗梦空间,我那呕血追求的学妹就此跟我决裂。她跟我的分手宣言就是:“数据结构课上你都敢睡?别扯淡IT界,就连计算机二级你都过不了,我跟一个拿不到学位证书的人谈什么谈?近墨者黑。”从此,我在她美丽的瞳孔里,始终是鲍鱼之肆。
公元一九九四年某个深夜,我的日记上写道:“文人独酌当晓月,思者孤形缠林间,一醉红尘多少事,眉上沟壑增云烟。”此诗写罢,十余年再未写诗。
小声自言自语一句,学妹的名字就在诗里,你懂的。
2.数据结构是什么东东?
要搞清数据结构是什么东东,首先要搞懂计算机是什么东东。
很久很久以前,多久?至少是几百万年前吧,我们的某一位曾曾曾曾……曾爷爷,一身拉风的毛根根丝滑,虽然没有用潘婷,但他刚在泥巴坑里和一群泥鳅躲了半天猫猫,然后又在清溪里被一排乌龟拌了几个大跟头,发质比林志玲还好。就在他逍遥地仰天长啸后不久,他看到了树上那个跟他有缘的苹果,谁说不是呢?人类的历史就是人类和苹果扯不清的关系。恰巧,祖先爷爷肚子奏响了进军的号角,他伸长手臂,努力地上窜下跳,但就是够不着。也不知道这树吸收了什么养分,怎么长那么高。曾的无数次方爷爷看看天上飞翔的鸟,于是坐在地上开始困惑,但人类困惑的根源却是几百万年后的我,在公交3路车上才恍然大悟的——人类困惑的根源是没有进化好!
曾的无数次方爷爷困惑着困惑着,抓耳挠腮,不自觉地抓起了地上的一根枯树杈,那根树杈很长,他坐着一挥正巧打到了那个苹果,那个苹果在枝上一荡,掉了下来。这一刻,一不经意成为了永恒,就像我的人生里不经意地在人群里对文思眉多看了一眼。
这根枯树杈和你的计算机一样,都是人类的工具,都是协助人类器官功能延伸的,只是树杈是协助手脚,计算机协助的也许是你的大脑。
计算机既然是人类的工具,那我想请他帮我把宿舍里那盆脏衣服和臭袜子洗了。可以,谁叫计算机是工具呢!但为了防止你回宿舍没有衣服换,你必须要有相应的程序。透露一个天机:实际上,在我们这个时代,大多数计算机真正只会干一样活——执行程序,其他的都是假象。在这儿,我们用到计算机界一个常用的公式:
程序= 算法+ 数据结构
你要求处理的衣服(包括各种款色加各种颜色的内裤、外套、袜子)就是你所面临的数据结构,或许这儿我们该叫它们“结构数据”才对,它所承担的责任便是怎么将现实中的问题转化成计算机能够接受的格式,计算机不是你孙子,你光扯着嗓门对着计算机喊,嗓子哑了也没用。
“数据结构”这个术语从字面上看,分成数据和结构两部分。数据就是将来计算机要处理的数字化信息。前些年有本很火的书,叫《数字化生存》,讲的就是我们的社会生活正
在走向全面数字化,原因之一,就是我们在依赖数字计算机。味觉、视觉、触觉等等所有人类感知世界的途径都在一步步用冷冰冰的数字代替,你的臭袜子脏衣服要想要计算机帮你洗,就得进行数字化,也就是变成数据。我们把每一个数据作为一个结点。数据来了,得按照数据间的关系进行组织,这个组织就形成结构,胡子辫子不能一把抓,袜子内裤不能完全一样处理。总之,数据结构就是待解决的现实问题转换成的有组织有纪律的数字形式,以便数字计算机处理,本门课程更关注的是数据的组织问题,也就是结构。
至于算法嘛,说白了就是计算机怎么来加工数据结构的,具体步骤如何,先做什么再做什么。算法因人而异,各个人想到的算法是经常不一样的,否则怎么会有的人衬衫洗完了领口依然脏,有的人洗完了衬衫内裤更加脏呢?
要想对算法有个更清晰的认识,大家不妨去《水浒传》里看看,王婆是怎么撮合西门官人和潘金莲的。从第一步王婆请潘金莲代做寿衣,到最后西门官人故意掉筷子,每一步都是精彩纷呈。我坚信,中国人如此热衷于兵法和算计,算法人才定然是个顶个的绝顶高手。
3.常见的数据结构有哪些?
数据的结构分成逻辑和物理两种情况,这就好比是一个军人,在逻辑上组织,他可以是少将师长或中士排长,在物理上组织,他可以在大上海的南京路巡逻,也可以在南沙群岛驻扎。数据的逻辑结构就是在意识上,我们用什么方法组织管理他们,是排成一个心型,还是摆成一条直线;数据的物理结构是这些数据在存储器上的实际位置安排,存储器可以是内存,也可以是外存(硬盘、U盘等)。
先来说说逻辑结构。
马克思主义哲学里讲,世界是运动的,普遍联系的,所以你想说,你和美国的一只狗毫无关系是完全错误的,在数据结构的世界里,你们至少是属于同一个集合的。
集合的概念是很松散的,加个特征我们就可以把风牛马不相及的事物搁到一起去。大作家肖伯纳说,全世界适合做你终身伴侣的人至少有五百万,那相信爱情缘分的人简直就是傻子呆子,哪来的缘分啊?纯粹巧合地运动了一些跟人类情感有关的细胞而已。那些“非你不嫁”和“非你不娶”,原来是那么的愚不可及。我就是这样的愚不可及,但正因为有像我这样的傻蛋,才点缀得这个世界美妙得如繁星点点。
除了集合,我们常说的数据结构有:线形结构、树形结构和图形结构。