第一图书网

数据结构

李根强 编 水利水电出版社
出版时间:

2000-6  

出版社:

水利水电出版社  

作者:

李根强 编  

页数:

257  

前言

  “数据结构”是计算机专业及相关专业的一门重要专业基础课,也是一门必修的核心课程,并且已成为其他理工专业的热门选修课。  在计算机科学的各领域中,都要使用到各种不同的数据结构,如编译系统中要使用栈、散列表、语法树等;操作系统中要使用队列、存储管理表、目录树等;数据库系统中要使用线性表、链表、索引树等;人工智能中要使用广义表、检索树、有向图等;同样在面向对象的程序设计、计算机图形学、软件工程、多媒体技术、计算机辅助设计等领域,都会用到各种不同的数据结构。因此,学好数据结构,对从事计算机技术及相关领域工作的人员来说,是非常重要的,它可以使你掌握各种常用的数据结构及其算法实现,以及每一种算法的时间复杂度分析和空间复杂度分析,知道在什么情况下使用什么样的数据结构最方便,为以后研究和开发大型程序打下基础。  数据结构的主要任务是:讨论现实世界中的各种数据(数字、字符、字符串、声音、图形、图像等)的逻辑结构、在计算机中的各种存储结构(存储表示)以及对各种非数值运算的算法实现;分析各种不同算法的好坏及其在什么地方应用比较合适。通过数据结构课程的学习,使学生具备用所学的数据结构来解决实际问题及评价算法优劣的能力,为以后学习后续计算机专业课程及走上工作岗位从事计算机大型软件开发铺路。  本书是在延续2005年第一版编写风格的基础上,根据作者多年教学与研发经验,并考虑到读者使用后的反馈信息,对各章节内容、结构等进行了适当修订、调整、完善和补充,增加了相应的功能,涵盖了硕士研究生数据结构考试大纲所规定的考试内容。  全书内容共分11章,第1章介绍数据结构与算法等一些基本术语,并对算法描述及算法分析作了简单说明,介绍衡量算法优劣的主要因素:时间复杂度和空间复杂度的求法;第2章到第4章,介绍线性结构(线性表、栈、队列、串)的逻辑特征、一些常用算法的实现及基本应用;第5章到第7章,介绍非线性结构(多维数组、广义表、树、二叉树、图)的逻辑特征、在计算机中的存储表示及一些常用算法的实现及基本应用;第8章到第10章,介绍在计算机中使用非常广泛的两种运算:查找和排序,排序又可以分为内排序和外排序。对一些常用的查找、排序方法进行了详细说明,并给出了实现的算法及时间复杂度和空间复杂度分析;第11章介绍外存的文件的几种存储形式及组织方式。各章内容有相对独立的部分,可便于不同院校不同专业按需要组织教学。全书侧重于数据结构的应用,力求讲授内容与具体的计算机应用实例相结合,以便于学生加深对各章内容的理解和掌握。  本书的最大特点是采用面向对象的程序设计语言(c++语言)作为算法的描述语言,所有算法都已经上机调试通过。但是,由于篇幅所限,大部分算法都是以单独的函数形式给出,若读者要运行这些算法,还必须给出一些变量的说明及主函数来调用所给的函数。因此,本书中的算法描述比原来数据结构教材中用类Pascal语言或类c语言描述算法更直观,学生更容易理解和接受。作者在十几年的数据结构课程教学中,对数据结构中的各种算法进行了认真的研究和分析,在这方面积累了丰富的经验,因此,本书中所选的例题和习题都具有一定的针对性,

内容概要

  本书为普通高等教育“十一五”国家级规划教材。  本书从软件开发设计的角度出发,按照面向对象的程序设计思想,详细介绍了线性表、栈和队列、串、多维数组和广义表、树、图等不同的数据结构,以及这些数据结构在计算机中的存储表示和不同存储表示上的算法实现。每个算法都用C++语言进行描述,并全部上机在Visual C++ 6.0环境下运行通过。第8、9两章,介绍了计算机中常用的两种运算:查找和排序,详细介绍了不同的查找、排序运算的实现及各种算法的效率分析。最后一章,介绍了文件的基本概念和文件的组织形式。本书是在2005年第1版的基础上,做了一定的修改,增加了相应的功能,涵盖了硕士研究生数据结构考试大纲所规定的考试内容。  本书配套的《数据结构(C++版)习题解答及实训指导》一书同时出版,既方便教学,又便于自学。  本书可以作为计算机类或信息类相关专业的本科或专科教材及硕士研究生考试的参考资料,也可以作为自学数据结构人员的参考资料,还可供从事计算机工程与应用工作的科技人员参考。

书籍目录

第二版前言第一版前言第1章 绪论 1.1 什么是数据结构  1.1.1 数据结构示例  1.1.2 基本术语  1.1.3 数据结构 1.2 算法描述  1.2.1 基本概念  1.2.2 算法描述 1.3 算法分析  1.3.1 时间复杂度  1.3.2 空间复杂度 本章小结 习题1第2章 线性表 2.1 线性表的定义及其运算  2.1.1 线性表的定义  2.1.2 线性表的运算  2.1.3 线性表的抽象数据类型描述 2.2 线性表的顺序存储结构  2.2.1 顺序表结构  2.2.2 顺序表运算  2.2.3 顺序表存储空间的动态分配 2.3 线性表的链式存储结构  2.3.1 单链表结构  2.3.2 单链表运算  2.3.3 循环链表结构  2.3.4 双向链表结构 2.4 一元多项式的表示及相加  2.4.1 一元多项式的表示  2.4.2 一元多项式的相加 2.5 顺序表与链表的比较 2.6 算法应用举例 本章小结 习题2第3章 栈和队列 3.1 栈  3.1.1 栈的定义  3.1.2 栈的运算  3.1.3 栈的抽象数据类型描述  3.1.4 顺序栈  3.1.5 链栈  3.1.6 栈的应用 3.2 队列  3.2.1 队列的定义  3.2.2 队列的基本运算  3.2.3 队列的抽象数据类型描述  3.2.4 循环队列  3.2.5 链队列  3.2.6 队列的应用 本章小结 习题3第4章 串 4.1 串的定义及运算  4.1.1 基本概念  4.1.2 串的运算  4.1.3 串的抽象数据类型描述 4.2 串的存储结构  4.2.1 顺序存储  4.2.2 链式存储  4.2.3 索引存储 4.3 串运算的实现  4.3.1 串插入  4.3.2 串删除  4.3.3 子串定位 ……第5章 多维数组和广义表第6章 树和二叉树第7章 图第8章 查找第9章 内排序第10章 外排序第11章 文件参考文献

章节摘录

  第1章 绪论  1.2 算法描述  1.2.1 基本概念  1.算法(Algorithm)  通俗地讲,算法就是一种解题的方法。更严格地说,算法是由若干条指令组成的有穷序列,它必须满足下述条件(也称为算法的五大特性):  (1)输入:具有0个或多个输入的外界量(算法开始前的初始量)。  (2)输出:至少产生一个输出,它们是算法执行完后的结果。  (3)有穷性:每条指令的执行次数必须是有限的。  (4)确定性:每条指令的含义都必须明确、无二义性。  (5)可行性:每条指令的执行时间都是有限的。  2.算法和程序的关系  算法的含义与程序十分相似,但二者是有区别的。一个程序不一定满足有穷性(死循环),另外,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。一个算法若用计算机语言来书写,则它就可以是一个程序。  1.2.2 算法描述  1.用流程图描述算法  一个算法可以用流程图的方式来描述,输入输出、判断、处理分别用不同的框图表示,用箭头表示流程的流向。这是一种描述算法的较好方法,目前在一些高级语言程序设计中仍然采用。  2.用自然语言描述算法  用我们日常生活中的自然语言(可以是中文形式,也可以是英文形式)也可以描述算法。  例如,某同志某天做的工作可以描述为一个算法形式,如下:  若今天我有空并且天不下雨,则我上街购物,否则我呆在家里看书。  3.用其他方式描述算法  还可以用数学语言或约定的符号语言来描述算法。  4.用C++描述算法  在本教材中,将采用C++或类C++来描述算法。


图书封面

广告

下载页面


数据结构 PDF格式下载



编程方面比较基础的教学用书!值得一看。。。


上课用书.


相关图书