零基础学数据结构

出版时间:2010-1  出版社:机械工业出版社  作者:陈锐  页数:453  
Tag标签:无  

前言

  《数据结构》是计算机科学与技术专业的一门核心课程,是算法设计的基础。在我们生活的现实世界里,每一种事物和其他事物都是有联系的,都可以进行抽象的描述。如果要解决某一个问题,必须将该问题抽象地表示出来,然后才能进行解决。《数据结构》就是完成将一个具体的问题进行抽象地表示的任务。数据结构是研究课程的目的如何将问题抽象表示出来,即将数据进行逻辑表示,再根据数据的逻辑结构表示为相应的存储结构,然后找到一个有效的解决问题的方法即算法,最后通过计算机程序设计语言编制程序,运行程序并得到最终的结果。  本书全面地介绍了数据结构中线、树、图的结构及查找、排序技术,并以实例介绍了算法的具体使用和应用实例。  本书特点  1. 内容全面,讲解详细  为了方便读者学习,本书首先对数据结构的目标和描述方式进行了介绍,并对算法使用的语言—C语言的重点和难点进行了介绍。本书覆盖了数据结构中线、树和图的所有知识点,对于每一种数据结构,都使用了所有可能的逻辑结构和存储结构进行描述,并对算法的实现尽可能采用多种实现方式,如递归和非递归、顺序存储和链式存储,从而使读者对算法的理解更加深刻。  2. 层次清晰,结构合理  本书将数据结构分篇、章、节和小节划分知识点,将知识点细化,易于读者理解。每一章、每一节、每一小节都被划分为单独的知识点,每一小节还可分为更多的知识点。在知识点的讲解过程中,循序渐进,由浅入深,先引出概念,再用例子说明,然后是算法描述,最后是具体程序实现。这样的层次十分易于读者进行理解和消化。  3. 结合图表,叙述简单  在每个概念提出后,都结合图表和例子详细解释以方便读者理解掌握。在语言的叙述上,普遍采用短句子、易于理解的语言,而避免使用复杂句子和晦涩难懂的语言,使读者可以更加容易和轻松地学习数据结构。  4. 例子典型,深入剖析  在讲解每一个算法时,结合具体例子进行剖析。在例子的选取上,优先选取最为常见且涵盖知识点丰富的典型算法的示例。在每一章的最后或比较大的知识点后面,都给出了一个完整的程序,给出程序的同时,结合流程框图进行具体讲解,深入分析;在程序的最后,给出了运行结果。读者在学习的过程中,可以结合例子和运行结果以验证算法的正确性。  5. 配有习题,巩固知识  在每一章的最后,都有一个小结,对本章的知识点进行总结。为了让读者熟练编写算法,本书在每一章(除第1章)的最后都配有一定数量的实践题目,在学习了每一章的内容之后,可以通过这些习题试着编写算法,以巩固本章学习的内容。  6. 配多媒体视频讲解,加速学习  本书配多媒体视频教学光盘,读者可以在视频的帮助下快速学习。另外,在本书的配套光盘中提供了本书涉及的程序代码、课后习题代码和免费提供的学习资料。  本书内容  本书的内容主要分为四篇:第一篇是基础篇,包括数据结构概述和C程序设计语言基础;第二篇是线性数据结构,包括线性表、栈、队列、串、数组和广义表;第三篇是非线性数据结构,包括树和图;第四篇是查找和排序,包括查找、内排序和外排序。  第1章:如果读者刚接触数据结构,这一章讲述数据结构是什么,它将告诉你本书的学习目标、学习方法和学习内容。本章还介绍了对算法的描述方法。  第2章:对本书的描述语言和使用工具进行了介绍。本章主要介绍了C语言的开发环境,然后介绍了C语言中的重点和难点─指针、数组、函数、递归和结构体。通过本章的学习,读者在以后数据结构的学习过程中,将会得心应手。  第3章:主要介绍了线性表。本章首先讲解了线性表的逻辑结构,然后介绍了线性表的两种常用存储结构,并讲解了各种链表结构包括静态链表,并给出了算法的具体应用。通过本章的学习,读者将掌握顺序表和各种链表的操作。  第4章:主要介绍了一种特殊的线性表─栈。本章首先介绍了栈的定义,然后介绍了栈的应用及栈与递归的关系、转化。通过本章的学习,读者将学会栈的使用和深入理解递归和栈。  第5章:主要介绍了另一种特殊的线性表─队列。本章首先介绍了队列的概念,然后介绍了顺序队列、循环队列和链式队列,并给出了各种队列的实现算法。最后结合具体例子分析了队列的具体使用。  第6章:主要介绍了另一种特殊的线性表─串。本章首先介绍了串的概念,然后介绍了串的各种存储表示,并介绍了串的模式匹配算法。通过串的模式匹配可以提高求子串的效率。  第7章:主要介绍了数组。本章首先介绍了数组的概念,然后介绍了数组(矩阵)的顺序存储、压缩存储及矩阵的运算,最后介绍了几种特殊的矩阵。通过本章的学习,读者将掌握矩阵的一些算法操作。  第8章:主要介绍了广义表。本章首先介绍了广义表的概念,然后介绍了广义表的两种存储方式,最后给出了广义表的操作实现。  第9章:主要介绍了一种非线性数据结构─树。本章首先介绍了树和二叉树的概念,然后介绍了树的存储表示,二叉树的性质,二叉树的遍历和线索化,树、森林与二叉树的转换及哈夫曼树。本章在讲解这些知识点时,均给出了具体例子以增强对这些知识的理解。最后,专门给出树与二叉树的具体应用。  第10章:主要介绍了另一种非线性数据结构─图。本章首先介绍了图的概念和存储结构,然后介绍了图的遍历、最小生成树、拓扑排序、关键路径及最短路径。在讲解这些知识点时,都给出了相应的算法和例子,以加强对知识点的理解。  第11章:本章主要介绍了一种数据结构的常用技术─查找。查找是数据结构中非数值运算中比较常用的技术,本章首先介绍了查找的概念,然后介绍了各种查找算法,并结合具体实例进行了详细的讲解,并给出了完整程序。通过本章的学习,读者将掌握程序设计中非常重要的查找技术。  第12章:本章主要介绍了另一种数据结构的常用技术─内排序。排序是数据结构中最为常用的技术,本章首先介绍了排序的相关概念,然后介绍了多种排序技术,并结合实例讲解了这些算法的实现,每一节都给出了完整的程序。通过本章的学习,读者将掌握程序设计中最为常用的排序技术。  第13章:主要介绍了外排序。本章首先介绍了外存的存取特性,然后介绍了磁盘排序和磁带排序。外排序用于待排序数据量非常大的情况,其具体实现思想就是将待排序记录在内存和外存调入调出,从而实现外排序。  本书适合的读者  大中专院校的学生  准备考研的人员  准备参加软件等级考试的人员  软件开发人员  计算机相关的科研工作者  本书作者  本书由陈锐主笔编写,同时参与编写和资料整理的有刘亮亮、丁士锋、何涛发、陈杰、黄曦、罗嘉、段春江、韩红宇、李嵩峰、莫光胜、王天国、李蓉、吴荣、宋祥亮、刘宇、吕晓鹏、王大伟、吴小平、张卫忠、施佳鹏、王嘉、吴雪、阳婷、张秀妍、王江、王志永、杨红、郑维龙、王松、张文。  编 者

内容概要

《数据结构》是计算机专业的专业基础课和核心课程。本书内容全面,所有算法都是用C语言描述,能够直接运行,在每一章的所有知识点都给出了算法的具体使用。本书内容包括数据结构概述、C语言程序设计基础、线性表、栈、队列、串、数组、广义表、树和二叉树、图、查找、内排序和外排序。为了便于读者学习,在讲解每一个知识点时,都结合图和具体实例进行分析,在每个知识点的最后都给出算法的具体应用,每一个例子都比较典型且知识点覆盖完整。    本书可作为大中专院校的计算机相关专业数据结构的教材,也可作为计算机软件开发、考验和软件等级考试相关人员的参考书。

书籍目录

出版说明前言第一篇  基础篇  第1章  数据结构概述     1.1  数据结构的基本概念     1.2  抽象数据类型及其描述       1.2.1  抽象数据类型的定义       1.2.2  抽象数据类型的描述    1.3  数据结构的逻辑结构与物理结构      1.3.1  逻辑结构       1.3.2  物理结构     1.4  算法的特性与算法的描述       1.4.1  算法的定义       1.4.2  算法的特性       1.4.3  算法的描述     1.5  算法分析      1.5.1  算法设计的要求       1.5.2  算法效率评价       1.5.3  算法时间复杂度       1.5.4  算法空间复杂度     1.6  小结  第2章  C语言基础  2.1 开发环境介绍   2.1.1 Turbo C 2.0开发环境介绍   2.1.2 Visual C++6.0开发环境介绍  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.5.1 结构体的定义    2.5.2 指向结构体的指针    2.5.3 联合体及应用   2.6 动态内存分配与释放    2.6.1 内存动态分配与释放    2.6.2 链表   2.7 小结   2.8 习题 第二篇 线性数据结构  第3章 线性表   3.1 线性表的概念及运算    3.1.1 线性表的逻辑结构    3.1.2 线性表的抽象数据类型   3.2 线性表的顺序表示与实现    3.2.1 线性表的顺序存储结构    3.2.2 顺序表的基本运算    3.2.3 顺序表的实现算法分析   3.3 顺序表的应用举例   3.4 线性表的链式表示与实现    3.4.1 单链表的存储结构    3.4.2 单链表的基本运算   3.5 单链表应用举例   3.6 循环单链表    3.6.1 循环单链表的链式存储    3.6.2 循环单链表的应用   3.7 双向链表    3.7.1 双向链表的存储结构    3.7.2 双向链表的插入操作和删除操作   3.8 双向链表的应用举例   3.9 静态链表   ……  第4章  栈   第5章  队列   第6章  串   第7章  数组   第8章  广义表 第三篇  非线性数据结构  第9章  树   第10章  图 第四篇  查找和排序  第11章  查找   第12章  内排序   第13章  外排序

章节摘录

  1.2.1抽象数据类型的定义  抽象数据类型是对具有某种逻辑关系的数据类型进行描述,并在该类型上进行的一组操作。抽象数据类型描述的是一组逻辑上的特性,与在计算机内部表示无关。计算机中的整数数据类型是一个抽象数据类型,不同的处理器可能实现方法不同,但其逻辑特性相同,即加、减、乘、除等运算是一致的。  抽象数据类型不仅包括在计算机中已经定义了的数据类型,如整型、浮点型等,还包括用户自己定义的数据类型,如结构体类型、类等。  一个抽象数据类型定义了一个数据对象、数据对象各数据元素之间的关系及对数据元素的操作。  抽象数据类型通常是指用户定义的解决应用问题的数据模型,包括数据的定义和操作。例如,c++的类就是一个抽象数据类型,它包括用户类型的定义和在用户类型上的一组操作。  抽象数据类型体现了程序设计中的问题分解、抽象和信息隐藏特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。这与日常生活中盖房子类似。  我们可以把盖房子分成几个小任务,一方面需要工程技术人员提供房子的设计图纸,另一方面需要建筑工人根据图纸打地基、盖房子,房子盖好以后还需要装修工人装修,这与抽象数据类型中的问题分解类似。工程技术人员不需要打地基和盖房子的具体过程,装修工人不需要知道怎么画图纸和怎样盖房子,这就相当于抽象数据类型中的信息隐藏。  1.2.2抽象数据类型的描述  抽象数据类型可以用数据集合和基本操作集合来描述。其中,数据集合包括对数据对象和数据对象中元素之间关系的描述,基本操作集合是对数据对象的运算的描述。数据对象和数据关系的定义采用数学符号和自然语言描述,基本操作的定义格式为:  基本操作名(参数表):初始条件和操作结果描述。  例如,一个队列的抽象数据类型描述如下。  1.数据集合  队列的数据集合为{a1a2,…,an},每个元素的类型均为DataType。其中,a1是队头元素,an是队尾元素。入队和出队都是按照a1,,a2,…,an的先后次序进入队列和退出队列。  2.基本操作集合  队列的基本操作主要有以下六项。  (1)InitQueue(&Q):初始化操作,建立一个空队列Q。这就像日常生活中,火车站售票处新增加了一个售票窗口,这样就可以新增一队用来排队买票。  (2)QueueEmpty(Q):若Q为空队列,返回1,否则返回0。这就像日常生活中,火车站售票窗口前是否还有人排队买票。  (3)EnterQueue(&Q,x):插入元素x到队列Q的队尾。这就像日常生活中,新来买票的人要在队列的最后一样。  (4)DeleteQueue(&Q,&e):删除Q的队首元素,并用e返回其值。这就像买过票的排在队头的人离开队列。

编辑推荐

  内容全面:《零基础学数据结构》涵盖了数据结构中几乎所有知识点  图文并茂:用通俗易懂的文字描述,并绘制了多幅示意图帮助读者理解  实例丰富:全书提供了70余个典型实例帮助读者理解数据结构与算法思想  C语言描述:书中的算法采用C语言描述,适合众多读者学习  视频教学:配有19.5小时多媒体视频进行讲解,学习效果好  励志照亮人 编程改变命运  《零基础学数据结构》涵盖内容  数据结构基本概念、抽象数据类型及描述  数据结构的逻辑结构与存储结构、算法特性与描述、算法分析  递归与非递归、指针、参数传递  结构体与联合体、动态内存分配与释放、链表  线性表的概念及运算、线性表的顺序表示与实现  单链表、循环单链表、双向链表、静态链表  栈的表示与实现、栈的顺序表示与实现  栈的链式表示与实现、栈与递归的实现  队列的定义、顺序存储及实现、链式存储及实现、双端队列  串的顺序表示与实现、串的堆分配表示与实现  串的链式存储表示与实现、串的模式匹配  数组的顺序表示与实现、特殊矩阵的压缩存储  稀疏矩阵的压缩存储、稀疏矩阵的十字链表表示与实现  广义表的头尾链表表示与实现、广义表的扩展线性链表表示与实现  二叉树的存储表示与实现、遍历、线索化、哈夫曼树图的定义、存储结构、遍历、连通性、有向无环图  静态查找、动态查找、B-树与B+树、散列表  内排序:插入排序、选择排序、交换排序、归并排序、基数排序  外排序:磁盘排序、磁带排序  光盘内容  书中涉及的程序源代吗  《零基础学数据结构》多媒体教学视频  《零基础学数据结构》教学PPT  赠送的编程电子图书  丛书特点  配有多媒体教学进行讲解,学习起来直观  门槛低,没有任何基础的读者都能轻松掌握  丛书作者均为有多年编程经验的一线程序员  对每本书都提供了大量典型实例帮助读者理解  提供典型安全帮助读者提高开发水平  书中的源代码都 提供了详细的注释,阅读起来无障碍  光盘提供书中的源代吗、教学视频及超值学习资料

图书封面

图书标签Tags

评论、评分、阅读与下载


    零基础学数据结构 PDF格式下载


用户评论 (总计21条)

 
 

  •   对于程序员来说,数据结构是必修课。这本书和严蔚敏的那本数据结构有些相似,相比之下,此书有详细的程序段,对于初学数据结构的程序员来书难能可贵。而严蔚敏的数据结构大多按伪代码的方式给出程序结构,看懂不成问题,但是编程难度还是比较大。
    此书的内容也很丰富,40元的价格很合理。
    强烈推荐!
  •   写的比较详细,适合入门,就是封面有点损坏,还可以接受,数据结构的各个方面都写到了
  •   书非常,很适合初学者
  •   书的印刷 纸张 各方面都很好 还打折 以后买书有地儿了
  •   很实用的一本书,适合打基础
  •   就是这样一本还算不错的书!
  •   朋友说这本书挺好的,帮朋友买的
  •   书籍和质量不错,包装的也很好
  •   非常好,强力推荐。
  •   买来做部门内部培训的
  •   很快就收到货了!!不错。很满意。
  •   feichanghhao
  •   对于初学者来说已经很不错了!
  •   本来是想买 算法的, 没货才买的它
  •   发货速度很快,所购书本及光碟与描述一致,只是书中程序的{}不太精确,其他地方很赞
  •   不是零基础
  •   我就喜欢正版的书
  •   值得买,很容易上手
  •   正好晚上在复习数据结构,我们用的严蔚敏的教材,然后收到的货,翻得看了下,确实比较好理解,但是觉得内容没严的专业,虽然说严的看的我晕,呵呵,不过打基础应该还不错 !
  •   该书的内容毋庸置疑,相当的不错,我已经看了一些了,但是货的质量比较差,一看就是压了很久的书,整个书都有些折痕。同时,书的封皮已经掉了一大半了,我还得自己粘起来。希望当当下次发货前将货保存好,不要再出现类似的问题。
  •   书的质量太差了,而且快递的速度像是从上海爬过来的!
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7