内容简介
本实验指导教程是配合计算机及相关专业的“数据结构”课程而编写的。在内容编排方面,按照循序渐进、由浅入深的顺序设计、选取案例。全书共分两个部分:第一部分为“数据结构实验”;第二部分为“数据结构课程设计”。
第一部分(包括第1~8章)针对每个知识点,首先给出明确的要求,随后设计基础实验,特别是前几章在基础实验之后,设计了若干应用案例。这样有利于学生明确知识点在应用中如何使用,消除迷茫感、增强学习兴趣。
第二部分(即第9章)是课程设计,介绍在一个项目中如何选择和使用多种基本的数据结构,介绍如何有效地将它们融合在一起,解决实际的复杂应用问题。
本书可作为高等院校计算机及相关专业数据结构课程的实验教材。
前 言
数据结构是计算机及相关专业中一门重要的专业基础课程。用计算机解决实际问题时,就要涉及数据的表示及数据的处理,而这正是数据结构课程的主要研究对象。通过对数据结构知识内容的学习,可以为后续课程,尤其是软件方面的课程打下坚实的基础,同时,也提供了必要的技能训练。此课程的学习质量将直接影响计算机软件系列课程的学习效果,因此,数据结构课程在计算机专业中具有举足轻重的作用。
根据我们多年的教学经验,认为学生学习数据结构的主要困难在于解题。学生在解题中经常会出现错误,原因在于实践能力不足。
要学好数据结构,仅仅通过课堂教学或自学获取理论知识是远远不够的,还必须加强实际动手能力的训练。只有通过实验课调试和运行已有的各种典型算法和已编写的程序,从成功和失败的经验中得到锻炼,才能熟练掌握和运用理论知识解决软件开发中的实际问题,达到学以致用的目的。
本实验指导教程是配合计算机及相关专业数据结构课程而编写的。本书在内容编排方面,按照循序渐进、由浅入深的顺序设计、选取案例。根据教学内容,针对学生的实际情况,本书在内容编排上共分两个部分。第一部分为"数据结构实验";第二部分为"数据结构课程设计"。
第一部分(包括第1~8章)针对每个知识点,首先给出明确的要求,随后设计基础实验,特别是前几章在基础实验之后,设计了若干应用案例。这样有利于学生明确知识点在应用中如何使用,消除学生的迷茫感、增强学生的学习兴趣。
第二部分(即第9章)是课程设计,介绍在一个项目中如何选择和使用多种基本数据结构,介绍如何有效地将它们融合在一起解决实际的复杂应用问题。这有利于学生更深层次地掌握数据结构原理及其应用范围和过程。
本书具有以下特点。
(1) 基于案例驱动的教学内容设计。在实验案例的选择方面,不仅有针对知识点的基础案例,而且有对应的应用案例,从而使学生能够消除畏难情绪。我们在该实验教材的编写过程中,选择案例时由浅入深并精心设计了应用案例,以确保应用的完整性。
(2) 提供大量的源代码和开发案例。在该实验教材的编写中,摒弃了伪代码的描述,全部采用C语言源代码,这些源代码都是经过调试并且在教学过程中已经应用的,学生可以直接分析和模仿。同时,在重要的章节,都提供了较为深入的设计案例,例如多项式的运算、括号匹配判断系统、迷宫求解系统、最短路径求解等,为学生提供了更为深入的源码讨论和模仿的机会,极大地提高了教材的全面性、深入性和综合性。
(3) 提供典型的课程设计内容。为了更好地提高学生的专业技能训练水平以及提高学生的学习兴趣,在本书的编写过程中,编写成员根据自己多年教学的积累,整理出了适合计算机专业学生实际情况的课程设计题目,并提供了相应的解决思路和源代码,为学生提供了很好的学习机会和训练机会。
本书提供案例程序的源代码(可运行),并赠送C++版案例实验教程。读者可以从清华大学出版社的网站下载。
本书可作为高等院校计算机及相关专业数据结构课程的实验教材。
由于编者水平有限,错误和不当之处在所难免,希望读者批评指正。
编 者
目录
第1章 顺序表 1实验1 顺序表的实现 21.实验目的 22.实验内容 23.算法设计 24.程序实现 35.运行程序 5实验2 顺序表的应用--集合运算 51.实验目的 52.实验内容 53.算法设计 54.程序实现 65.运行程序 8实验3 顺序表的应用--回文数猜想 81.问题描述 82.基本要求 83.算法设计 84.程序实现 95.运行程序 10第2章 链表 11实验1 单链表的实现 121.实验目的 122.实验内容 123.算法设计 124.程序实现 135.运行程序 15实验2 单链表的应用--约瑟夫问题 161.问题描述 162.基本要求 163.算法设计 164.程序实现 165.运行程序 17实验3 单链表的应用--多项式求和 181.问题描述 182.基本要求 183.算法设计 184.实现程序 185.运行程序 21第3章 栈 23实验1 顺序栈的实现 241.实验目的 242.实验内容 243.算法设计 244.程序实现 255.运行程序 26实验2 链栈的实现 261.实验目的 262.实验内容 263.算法设计 274.程序实现 275.程序运行 28实验3 栈的应用--数制转换 281.问题描述 282.基本要求 283.算法设计 294.程序实现 295.运行程序 30实验4 栈的应用--括号匹配问题 301.问题描述 302.基本要求 303.算法设计 304.程序实现 305.运行程序 31实验5 栈的应用--表达式求值 321.问题描述 322.基本要求 323.算法设计 324.程序实现 325.运行程序 34第4章 队列 35实验1 循环队列的实现 361.实验目的 362.实验内容 363.算法设计 364.程序实现 375.运行程序 38实验2 链队列的实现 391.实验目的 392.实验内容 393.算法设计 394.程序实现 395.运行程序 41实验3 队列的应用--优先队列 411.问题描述 412.基本要求 413.算法设计 414.实现程序 425.运行程序 44实验4 队列的应用--双端队列 451.问题描述 452.基本要求 453.算法设计 454.程序实现 455.运行程序 48第5章 二叉树 49实验1 二叉树的建立 501.实验目的 502.实验内容 503.算法设计 504.程序实现 515.运行程序 51实验2 二叉树的遍历 521.实验目的 522.实验内容 523.算法设计 524.程序实现 535.运行程序 55实验3 二叉树的高度、节点数、叶子节点数 551.实验目的 552.实验内容 553.算法设计 554.程序实现 555.运行程序 57实验4 堆 571.问题描述 572.基本要求 573.算法设计 574.程序实现 585.运行程序 60第6章 图 61实验1 图的邻接矩阵表示 621.实验目的 622.实验内容 623.实现提示 624.程序实现 625.运行程序 64实验2 图的邻接表表示 641.实验目的 642.实验内容 643.实现提示 644.程序实现 645.运行程序 66实验3 图的深度优先搜索 671.问题描述 672.基本要求 673.实现提示 674.程序实现 675.运行程序 69第7章 排序 71实验1 冒泡排序 721.实验目的 722. 实验内容 723.实现提示 724.程序实现 735.运行程序 74实验2 插入排序、选择排序 741.实验目的 742.实验内容 743.实现提示 754.程序实现 755.运行程序 76实验3 归并排序 761.实验目的 762.实验内容 763.实现提示 764.实现程序 765.运行程序 78实验4 快速排序 781.实验目的 782.实验内容 793.实现提示 794.程序实现 795.运行程序 80实验5 堆排序 811.实验目的 812.实验内容 813.实现提示 814.程序实现 815.运行程序 82第8章 查找 83实验1 折半查找 841.实验目的 842.实验内容 843.实现提示 844.程序实现 855.运行程序 86实验2 二叉排序树查找 871.实验目的 872.实验内容 873.实现提示 874.程序实现 875.运行程序 89实验3 哈希查找 891.实验目的 892.实验内容 893.实现提示 904.程序实现 905.运行程序 91第9章 课程设计 93问题1 学生成绩管理 941.问题描述 942.任务要求 943.程序实现 954.运行结果 98问题2 数据库管理系统 981.问题描述 982.任务要求 983.分析与实现 994.程序实现 1015.运行结果 116问题3 马踏棋盘 1171.问题描述 1172.任务要求 1173.分析与实现 1174.运行结果 120问题4 停车场管理 1211.问题描述 1212.任务要求 1213.分析与实现 1224.运行结果 126问题5 大整数计算器 1261.问题描述 1262. 任务要求 1273.分析与实现 1274.运行结果 132问题6 魔方阵 1321.问题描述 1322.任务要求 1333.分析与实现 1334.运行结果 134问题7 本科生导师制问题 1341.问题描述 1342.任务要求 1353.分析与实现 1354.运行结果 144问题8 电文的编码和译码 1451.问题描述 1452.任务要求 1453.分析与实现 1454.运行结果 148问题9 家族关系查询系统 1491.问题描述 1492.任务要求 1493.分析与实现 1494.运行结果 161问题10 地铁建设问题 1621.问题描述 1622.任务要求 1623.分析与实现 1624.运行结果 165问题11 校园导航 1651.问题描述 1652.任务要求 1653.分析与实现 1664.运行结果 169参考文献 170