数据结构(java)_数据结构(Java版)

前言

随着近年来计算概念的快速发展,计算学科已经发展成为一个内涵繁杂的综合性学科,其至少可以划分为计算机工程(CE)、计算机科学(CS)、信息系统(IS)、信息技术(IT)和软件工程(SE)5个领域,而且不同领域的人才所应具备的知识结构与能力侧重也不尽相同。尽管如此,从目前已经完成的部分来看,数据结构在各领域的知识体系中仍然占据着重要的位置。“数据结构”是普通高等院校计算机和信息管理等专业的一门必修课程,主要讨论数据的逻辑结构、在计算机中的存储结构以及对其进行的各种处理运算的方法和算法。

N.Wirth早在20世纪70年代就指出“程序=数据结构+算法”。数据结构主要研究数据在计算机中存储、组织、传递和转换的过程及方法,这些也是构成与支撑算法的基础。近年来

前言

随着近年来计算概念的快速发展,计算学科已经发展成为一个内涵繁杂的综合性学科,其至少可以划分为计算机工程(CE)、计算机科学(CS)、信息系统(IS)、信息技术(IT)和软件工程(SE)5个领域,而且不同领域的人才所应具备的知识结构与能力侧重也不尽相同。尽管如此,从目前已经完成的部分来看,数据结构在各领域的知识体系中仍然占据着重要的位置。“数据结构”是普通高等院校计算机和信息管理等专业的一门必修课程,主要讨论数据的逻辑结构、在计算机中的存储结构以及对其进行的各种处理运算的方法和算法。

N.Wirth早在20世纪70年代就指出“程序=数据结构+算法”。数据结构主要研究数据在计算机中存储、组织、传递和转换的过程及方法,这些也是构成与支撑算法的基础。近年来,随着面向对象技术的广泛应用,从数据结构的定义、分类、组成到设计、实现与分析的模式和方法都有了长足的发展,现代数据结构更加注重和强调数据结构的整体性、通用性、复用性、简洁性和安全性。

为遵循上述原则,本书选择Java作为描述语言,因为相对于其他语言,Java程序设计语言是应用广泛、面向对象程度化高的语言,利用Java语言中的类和接口能够准确地描述任何一种数据结构的逻辑定义和运算,利用一种存储结构定义的派生类能够高效地实现对数据的运算。

在内容的选取与结构上,本书并未涉及各种数据结构,而是通过分类和讲解典型结构使读者形成对数据结构的宏观认识。根据内容的侧重,本书共分8章,分别为绪论、线性表、栈和队列、串和数组、树形结构、图、排序和查找。

章介绍数据结构的基本概念,算法的描述和算法时间复杂度、空间复杂度等内容,是全书的基础。

第2章主要介绍线性表的基本概念和抽象数据类型定义、线性表顺序和链式两种存储方式的表示、基本操作的实现和相应的应用。

第3章简要介绍栈和队列的基本概念和抽象数据类型定义、栈和队列在顺序存储和链式存储结构下的基本操作和应用。

第4章主要介绍串的基本概念和数据类型定义、串的存储结构、基本操作实现和应用等内容。

第5章主要介绍树和二叉树的基本概念,详细介绍二叉树的性质和存储结构、遍历方法的实现及应用、哈夫曼树的概念和构造方法。

第6章主要介绍图的基本概念、抽象数据类型定义、存储结构和遍历方法,还介绍小生成树的基本概念和算法、短路径的相关算法、拓扑排序的概念和实现方法。

第7章介绍排序的基本概念,插入排序、交换排序、选择排序、归并排序等多种排序的原理、实现方法及性能分析。

第8章主要介绍查找的基本概念,顺序查找、二分查找等查找的原理、实现方法和性能分析,平衡二叉树、哈希表的概念、结构定义和实现方法。

本书的理论知识的教学安排建议如下:

章节内容学时数

章绪论2

第2章线性表4~6

第3章栈和队列6~8

第4章串和数组2~4

第5章树形结构6~8

第6章图4~8

第7章排序4~6

第8章查找4~6

建议先修课程: Java语言

建议理论教学时数: 32~48学时

建议实验(实践)教学时数: 16~32学时

本书中的所有算法都已经通过上机调试,尽量确保算法的正确性。在每章内容后都有小结,便于读者复结,并配有丰富的习题,包括选择题、填空题、算法设计题等,给读者更多思考的空间。

本书在以下几个方面具有突出特色:

(1) 内容精练,强化基础,合理安排内容结构,做到由浅入深、循序渐进。

本书各章节都从基本概念入手,逐步介绍其特点和基本操作的实现,把重点放在基础知识的介绍上,缩减难度较大的内容,使理论叙述简洁明了、重点突出、详略得当。

(2)  应用实例丰富、完整。

本书通过丰富的应用实例和源代码使理论和应用紧密结合,增强学生的理解能力,锻炼程序设计思维,并且代码有详细明了的注释,易于阅读。

(3)  每章后面附有小结和习题,便于学习、总结和提高。

本书结合学生的学习实际选择难度适中、逻辑合理,适于初学者和进阶者开拓思路、深入了解数据结构使用方法和技巧的习题,并附有详细的解答过程和注意要点,达到通俗易懂、由浅入深的效果,培养读者迁移知识的能力。

(4)  采用Java的泛型方法来体现方法的通用性。

本书采用面向对象的观点讨论数据结构技术,先将抽象数据类型定义成接口,再结合具体的存储结构加以实现,并以各实现类为线索对类中各种操作的实现方法加以说明。

(5)  图文并茂,便于学生直观地理解数据结构与算法。

本书通过图表的方式对数据结构及相应操作进行简单直接的描述,使内容更加浅显易懂。

教师可以按照自己对数据结构的理解适当地跳过一些章节,也可以根据教学目标灵活地调整章节的顺序,增减各章的学时数。

由于数据结构本身还在探索之中,加上我们的水平和能力有限,本书难免有疏漏之处,恳请各位同仁和广大读者给予批评指正,也希望各位能将实践过程中的经验和心得与我们交流(yunxianglu@hotmail.com)。

作者

2017年6月

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值