大话数据结构 - (EPUB全文下载)
文件大小:1.82 mb。
文件格式:epub 格式。
书籍内容:
大话数据结构
第1章 数据结构绪论
第2章 算法
第3章 线性表
第4章 栈与队列
第5章 串
第6章 树
第7章 图
第8章 查找
第9章 排序
关键词索引
参考文献
第1章 数据结构绪论
启示
数据结构:
是相互之间存在一种或多种特定关系的数据元素的集合。
1.1 开场白
If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.(如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。)
而我可能就是要折磨你们一辈子的那个人。大家好!我是《数据结构》这门课的老师,我叫封清扬。同学私下里都叫我“疯子”,嘿嘿,疯子可是有思想的标志哦。
在座的大家给我面子,都来选修我的课,这点我很高兴。不过在上课前,有些话还是要先说一下。
数据结构是计算机专业的基础课程,但也是一门不太容易学好的课,它当中有很多费脑子的东西,之后在上课时,你若碰到了困惑或不解的地方,都是很正常的反应,就像你想乘飞机去旅行,在飞机场晚点几个钟头,上了飞机后又颠簸恐慌了一把一样,别大惊小怪,都很平常,只要能安全到达就是成功。
如果你的学习目的是为了将来要做一个优秀的程序员,向微软、Google的工程师们看齐,那么你应该要努力学好它,不单是来听课、看看教科书,还需要课后做题和上机练习。不过话说回来,如果你真有这样的志向,课前就该开始研究了,这样来听我的课,就更加有主动性,收获也会更大。
如果你的目的是为了考计算机、软件方面的研究生,那么这门必考课,你现在就可以准备起来——很多时候,考研玩的不是智商,其实就是一个人投入的时间而已。
如果你只是为了混个学分,那么你至少应该要坚持来上课,在我的课堂上听懂了,学明白了,考前适当地复习,拿下这几个学分应该不在话下。
如果你只是来打酱油的,当然也可以,我的课不妨碍你打酱油,但你也不要妨碍其他同学坐到好位子,所以请靠后坐,并且保持安静,静心打酱油就好。
如果,我是说真的如果,你是一个对编程无比爱好的人,你学数据结构的目的,既不是为了工作为了钱,也不是为了学位和考试,而只是为了更好地去感受编程之美。啊,你应该得到我的欣赏,我想我非常愿意与你成为朋友——因为我自己也没有做到如此纯粹地去学习和应用它。
1.2 你数据结构怎么学的?
早先我有一个学生叫蔡遥,绰号“小菜”。他前段时间一直通过E-mail与我交流,其中说起了他工作的一些经历,感慨万千。我在这里就讲讲小菜的故事。
他告诉我,在做我学生时,其实根本就没好好学数据结构,时常逃课,考试也是临时突击后勉强及格。毕业后,他几经求职,算是找到了一份程序员的工作。
工作中,有一次他们需要开发一个客服电话系统,他们项目经理安排小菜完成客户排队模块的代码工作。
小菜觉得这个很容易,用数据库设计了一张客户排队表,并且用一个自动递增的整型数字作为客户的编号。只要来一个客户,就给这张表的末尾插入一条数据。等客服系统一有空闲,就从这张表中取出最小编号的客户提交,并且删除这条记录。花了两天时间,他完成开发并测试通过后,得意地提交了代码。谁知他们的项目经理,看完代码后,跑到他的桌前,拍着桌子对他说:“你数据结构怎么学的?这种实时的排队模块,用什么数据库呀,在内存中完成不就行了吗。赶快改,今天一定要完成,明天一早交给我。”
小菜吓得一身冷汗,这脸丢得有些大了,自己试用期都没结束,别因此失去工作。于是他当天加班加点,忙到晚上十一点,用数组变量重新实现了这个功能,因为考虑到怕数组不够大而溢出,于是他设计100作为数组的长度。
回到家中,他害怕这个代码有问题,于是就和他的表哥大鸟说起了这个事。他表哥笑嘻嘻地对他说:“你数据结构怎么学的?”小菜惊讶地张着大口,一句话也说不出来。然后他表哥告诉他,这种实时的排队系统,通常用数据结构中的“队列结构”是比较好的,用数组虽然也可以,但是又要考虑溢出,又要考虑新增和删除后的数据移动,总的说来很不方便。你只要这样……这样……就可以了。
小菜在大鸟的帮助下,忙到凌晨3点,重新用队列结构又写了一遍代码,上班时用U盘拷回公司,终于算是过了项目经理这一关。
之后,小菜开始重视数据结构,找回大学的课本重新学习。他还给我发了好些邮件,问了我不少他困惑的数据结构和算法的问题,我也一一给了他解答。终于有一天,他学完了整个课程的内容,并给我写了一封感谢信,信中是这么说的:
“封老师:您好!感谢您这段时间的帮助,在大学时没有好好上您的课真是我最大的遗憾。我现在已经学完了《数据结构》整本书的内容,收获还是很大的。可是我一直有这样的困惑想请教您,那就是我在工作中发现,我所需要的如栈、队列、链表、散列表等结构,以及查找、排序等算法,在编程语言的开发工具包中都有完美的实现,我只需要掌握如何使用它们就可以了,为什么还要去弄懂这里面的算法原理呢?”
我收到这封信时,立马跳了起来,马上拨通了他的手机,第一句话就是……你们猜猜看,我说了啥?
“你数据结构怎么学的?”(全场同学齐声大喊,大笑)
好了,我为什么这么讲,等你们学完我的课程就自然会明白。我只希望在将来,不要有某个人也对你们说出这句话,如果当真听到了这句话,就拜托你不要说你的数据结构老师是我封清扬,嘿嘿。
现在我们正式开始上课。
1.3 数据结构起源
早期人们都把计算机理解为数值计算工具,就是感觉计算机当然是用来计算的,所以计算机解决问题,应该是先从具体问题中抽象出一个适当的数据模型,设计出一个解此数据模型的算法,然后再编写程序,得到一个实际的软件。
可现实中,我们更多的不是解决数值计算的问题,而是需要一些更科学有效的手段(比如表、树和图等数据结构)的帮助,才能更好地处理问题。所以数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。
1968年,美 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 大话数据结构 - (EPUB全文下载)