本书系统介绍线性表、栈和队列、串、数组和广义表、树和二叉树、图、排序、查找等内容。以C语言作为数据结构和算法的描述语言。一般先通过应用实例引入,在数据类型基本操作介绍后,通过综合应用实例进行应用和消化。所有的综合应用实例在Visual C++6.0环境下调试、运行通过。通过本书学习,不但可以比较容易理解数据结构主要内容,而且应用数据结构知识解决了若干个小应用问题,大大提高学生解决问题的能力。

目前,“数据结构”不仅是计算机专业核心课程,其他许多理工类专业也把它作为选修课。但是,“数据结构”课程难学和难懂始终困扰着老师和学生们。通过长时间的探索和思考,我们认为,把数据结构主要内容的介绍与实际应用结合起来可以更容易理解相关的知识,也把学习数据结构的目的落到了实处。

本书主要包括下列特点。

(1)绪论从几个典型实例出发,回答“数据结构”研究的是什么内容,主要用于解决什么问题。在这个基础上介绍数据结构的基本概念。抽象数据类型从高级语言的数据类型出发,通过类比把数据类型变得不抽象。数据的逻辑结构和存储结构、算法的问题在后面章节与之相呼应。

(2)线性表首先介绍数据结构,由于对(a1,a2,…,an)线性表的表示太抽象,能够让学生理解这个表示就显得很重要。我们从扑克牌入手理解(a1,a2,…,an),在这个基础上介绍线性表的定义和抽象数据类型。然后从顺序存储结构和链式存储结构分别介绍抽象数据类型及其基本操作,通过扑克牌游戏和学生信息管理系统理解线性表数据类型及其应用方法。

(3)从栈和队列开始主要介绍数据类型及其基本操作,然后通过综合应用实例理解和消化这些知识。栈和队列的综合应用实例是“表达式求值”、“老鼠钻迷宫”、“打印文档”和“火车车厢重排”;“串”的综合应用实例是“简易的记事本”;“广义表”的综合应用实例是“文件目录结构”;“树及二叉树”的综合应用实例是“算术表达式的计算”和“电报编码”;“图”的综合应用实例是“高速公路行驶**方案”和