图书前言

前  言

    本书是与清华大学出版社出版的、徐孝凯和贺桂英编著的《数据结构(C语言描述)》一书相配套的辅助教材,它给出了主教材中每一章的知识要点、绝大部分习题的参考解答,并在附录一中给出了每章的单选题和填空题,附录二中给出了相应的参考解答。希望同学们要按照每个题目的要求,独立地分析问题和解决问题,给出相应的解答,不要事先翻阅答案。书中所给的参考解答只有当你解题后或确实不会做时进行参考才是有益的。

    数据结构是一门实践性很强的课程。对于自己编写的每一个算法,不仅要尽量符合算法评价的各项指标,更重要的是上机验证,在反复调试的过程中,通过典型的数据输入使得算法中的每条语句都被执行过,或者说不存在没有被执行过的语句或语句块。若调试过程发现语法或逻辑错误,则要及时修改。所谓逻辑错误是指算法设计上隐含的错误,虽然算法能够被正确地编辑和连接,但运行后得不到正确的结果。通过上机运行程序能够加深对所学知识的理解和掌握,进而获得书本上学不到的知识。

    解决一个算法问题通常要经过以下几步:①根据题目要求分析出设计思路或建立起数学模型,②根据设计思路或数学模型画出相应的流程图,③根据流程图用一种计算机语言(如C语言)编写出详细算法,④编写出能够调用该算法的完整程序,⑤上机调试和运行该程序,若发现错误则回到上述某一步开始向下修改,通过反复调试和修改,直到获得满意的结果为止。当然对于一些简单问题,上述步骤有的可以省略,有的则可以合并。

对于要解决的同一个问题,由于所采用的数据结构可能不同,所选择的计算方法(即算法)可能不同,则编写出的程序就可能不同,但只要你的程序正确并且有效(即具有较好的时间和空间复杂度)即可。例如要对n个数据进行排序,既可选择数组结构,也可选择二叉搜索树结构,对于数组结构,可以从快速、堆、合并、直接插入、直接选择等多种排序运算方法中任选一种,当采用不同的数据结构和排序方法时编写出的排序算法也不会相同,但它们都是正确的,通过进行时间和空间复杂度的分析可以比较出哪一种或几种更为有效。因此,每个人按照习题编写出的算法程序不要求与本书所给的解答完全一致,也许你编写出的算法具有更好性能。

    书中所有算法和程序都在C语言或VC++6.0语言环境下调试通过,但由于编写时间仓促,错误和不足之处在所难免,敬请广大读者和专家批评指正。我们的电子邮箱地址为xuxk@crtvu.edu.cn,联系电话为010-64910302。

                                                   徐孝凯 贺桂英

                                                      2004年3月