• 使用Java 图解数据结构
21年品牌 40万+商家 超1.5亿件商品

使用Java 图解数据结构

批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!

34.51 7.0折 49 全新

库存3件

四川成都
认证卖家担保交易快速发货售后保障

作者胡昭民 著

出版社清华大学出版社

ISBN9787302402992

出版时间2015-08

装帧平装

开本16开

定价49元

货号23751810

上书时间2024-10-21

百叶图书

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言

数据结构一直是计算机科学领域非常重要的基础课程,它除了是各大专院校信息工程、计算机工程、软件工程、应用数学以及计算机科学等信息相关专业的必修科目外,近年来包括机电、电子或一些商务管理系也列入选修课程。同时,一些信息相关专业的转学考试、研究所考试等,也将数据结构列入必考科目。由此可见,不论从考试的角度,或者研究信息科学的角度,数据结构确实是有志于从事信息工作的专业人员不得不重视的一门基础课程。

要学好数据结构的关键点在于能否找到一本容易阅读,并将数据结构中各种重要理论、算法等做详实的解释及举例的图书。市面上以Java来实现数据结构理论的书籍比较缺乏,本书是一本如何将数据结构概念用Java程序语言实现的重要著作。为了方便学习,书中程序代码都是完整的,可以避免片断学习程序的困扰。另外,本书下载文件中包括提供范例完整的程序代码,方便练习及教学之用。

本书的主要特色在于将比较复杂的理论以图文并茂的形式进行说明,并以简单的表达方式,将这些数据结构理论加以解释。为了避免在教学及阅读上的不顺畅感,书中的算法尽量不以伪码进行说明,而以Java程序语言来展现。同时,书中提到的重要理论,尽量搭配完整的范例程序,便于读者了解以Java语言实现这些算法的注意事项。

另外,为了检验读者各章的学习成果,在书中安排了大量的习题,这些题目包含重要考试的考题,以便读者更加灵活应用各种知识。

在附录中提供Java的开发环境的简介,本书编辑环境是采用Eclipse软件,它是一套Open Source的Java IDE工具,Eclipse整合编译、运行、测试及除错功能。

一本好的理论书籍除了内容的完整专业外,更需要清晰易懂的架构安排及表达方式。在仔细阅读本书之后,相信读者会体会笔者的用心,也希望用户能对这门基础学科有更深入、更完整的认识。

 

本书配套源代码下载地址(注意数字与字母大小写):http://pan.baidu.com/s/1bnqCuHD,若下载有问题,请电子邮件联系booksaga@126.com,邮件标题为“求代码,图解数据结构:使用Java”。

 

作者敬笔

导语摘要
胡昭民编著的《图解数据结构--使用Java》是一 本以Java程序语言实战来解说数据结构概念的教材。
  全书内容浅显易懂,利用大量且丰富的图示与范例, 详解复杂的抽象理论,从基本的数据结构概念开始 说明,再以Java工具加以诠释阵列结构、堆栈、链表 、队列、排序、查找等重要的概念,引领读者抓住重 点轻松进入数据结构的学习领域。
  本书每章重要理论均有范例实现,书中收录了精 华的演算法及程序的执行过程,在线阅读或下载附有 完整的范例程序源代码,读者可以依照学习进度做练 习。除此之外,还有配合各章教学内容的练习题目, 以便读者测试自己的学习效果。
  本书内容架构完整,逻辑清楚,采用丰富的图例 来阐述基本概念及应用,有效提升可读性。以Java程 序语言实现数据结构中的重要理论,以范例程序说明 数据结构的内涵。采用“Eclipse”Java ID工具,整 合编译、执行、测试及除错功能。强调边做边学,结 合下载文件,给予完整的支援。

目录
等1章 数据结构导论

 1.1 数据结构简介

  1.1.1 数据与信息

  1.1.2 算法

  1.1.3 算法的条件

 1.2 认识程序设计

  1.2.1 程序开发流程

  1.2.2 数据类型简介

  1.2.3 结构化程序设计

  1.2.4 面向对象程序设计

 1.3 算法效能分析

  1.3.1 时间复杂度

  1.3.2 Big-oh

  1.3.3 Ω(omega)

  1.3.4 θ(theta)

 1.4 面向对象程序设计?

  1.4.1 类与对象

  1.4.2 面向对象特性

  1.4.3 数据封装

  1.4.4 类继承

  1.4.5 对象多态

  1.4.6 抽象类

  1.4.7 接口

 本章重点整理

 本章习题

等2章 数组结构

 2.1 线性表

  2.1.1 线性表定义

  2.1.2 线性表在计算机中的应用

 2.2 认识数组

  2.2.1 一维数组

  2.2.2 二维数组

  2.2.3 三维数组

  2.2.4 n维数组

  2.2.5 Arrays类实现

 2.3 矩阵的简介与运算

  2.3.1 矩阵相加

  2.3.2 矩阵相乘

  2.3.3 转置矩阵

  2.3.4 稀疏矩阵

  2.3.5 上三角形矩阵

  2.3.6 下三角形矩阵

 2.4 数组与多项式

  2.4.1 认识多项式

  2.4.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.3 双向链表

  3.3.1 双向链表的定义

  3.3.2 双向链表的节点插入

  3.3.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 后序表示法求值

 4.4 中序法转换为前序法

  4.4.1 二叉树法

  4.4.2 括号法

  4.4.3 堆栈法

 4.5 前序与后序式转换成中序式

  4.5.1 括号法

  4.5.2 堆栈法

 本章重点整理

 本章习题

等5章 队列

 5.1 认识队列

  5.1.1 队列的工作运算

  5.1.2 队列的数组实现

  5.1.3 以链表实现队列

 5.2 队列的应用

  5.2.1 环形队列

  5.2.2 优先队列

  5.2.3 双向队列

 本章重点整理

 本章习题

等6章 树状结构

 6.1 树

 6.2 二叉树简介

  6.2.1 二叉树的定义

  6.2.2 特殊二叉树简介

 6.3 二叉树存储方式

  6.3.1 数组表示法

  6.3.2 列表表示法

 6.4 二叉树的遍历

  6.4.1 中序遍历

  6.4.2 前序遍历

  6.4.3 后序遍历

  6.4.4 二叉树的遍历实现

  6.4.5 二叉运算树

 6.5 二叉树的高级研究

  6.5.1 二叉排序树

  6.5.2 二叉搜索树

  6.5.3 线索二叉树

 6.6 树的二叉树表示法

  6.6.1 树转换为二叉树

  6.6.2 树林转换为二叉树

  6.6.3 树与树林的遍历

  6.6.4 确定二叉树

 本章重点整理

 本章习题

等7章 图形结构

 7.1 图论的起源

 7.2 图形介绍

 7.3 图形表示法

  7.3.1 相邻矩阵法

  7.3.2 相邻表法

  7.3.3 相邻多元列表法

  7.3.4 索引表格法

 7.4 图形的遍历

  7.4.1 先深后广法

  7.4.2 先广后深法

 7.5 生成树

 7.6 MST生成树

  7.6.1 Prim算法

  7.6.2 Kruskal算法

 7.7 图形短路径

  7.7.1 单点对全部顶点

  7.7.2 顶点两两之间的短距离

 7.8 AOV网络与拓扑排序

  7.8.1 AOV网络简介

  7.8.2 拓扑排序实现

  7.8.3 AOE网络

 本章重点整理

 本章习题

等8章 排序

 8.1 排序简介

  8.1.1 排序的分类

  8.1.2 排序算法分析

 8.2 内部排序法

  8.2.1 冒泡排序法

  8.2.2 选择排序法

  8.2.3 插入排序法

  8.2.4 希尔排序法

  8.2.5 合并排序法

  8.2.6 快速排序法

  8.2.7 堆积排序法

  8.2.8 基数排序法

 8.3 外部排序法

 本章重点整理

 本章习题

等9章 查找

 9.1 查找简介

 9.2 常见查找方法

  9.2.1 顺序查找法

  9.2.2 二分查找法

  9.2.3 插值查找法

  9.2.4 斐波那契查找法

 9.3 哈希查找法

  9.3.1 哈希法简介

  9.3.2 常见的哈希函数

  9.3.3 碰撞问题

  9.3.4 哈希法综合范例

 本章重点整理

 本章习题

附录 Java的开发环境简介

内容摘要
胡昭民编著的《图解数据结构--使用Java》是一 本以Java程序语言实战来解说数据结构概念的教材。

  全书内容浅显易懂,利用大量且丰富的图示与范例, 详解复杂的抽象理论,从基本的数据结构概念开始 说明,再以Java工具加以诠释阵列结构、堆栈、链表 、队列、排序、查找等重要的概念,引领读者抓住重 点轻松进入数据结构的学习领域。

  本书每章重要理论均有范例实现,书中收录了精 华的演算法及程序的执行过程,在线阅读或下载附有 完整的范例程序源代码,读者可以依照学习进度做练 习。除此之外,还有配合各章教学内容的练习题目, 以便读者测试自己的学习效果。

  本书内容架构完整,逻辑清楚,采用丰富的图例 来阐述基本概念及应用,有效提升可读性。以Java程 序语言实现数据结构中的重要理论,以范例程序说明 数据结构的内涵。采用“Eclipse”Java ID工具,整 合编译、执行、测试及除错功能。强调边做边学,结 合下载文件,给予完整的支援。

精彩内容
第3章  链表

3.1 单向链表

3.2  环形链表

3.3  双向链表

链表(Linked List)是由许多相同数据类型的元素按照特定顺序排列而成的线性表,其特性是在计算机内存的位置是不连续与随机(Random)存储的,优点是数据的插入或删除都相当方便,有新数据加入就向系统要一块内存空间,数据删除后,就把空间还给系统,不需要移动大量数据。缺点是设计数据结构时较为麻烦,另外在查找数据时,也无法像静态数据一样可随机读取数据,必须按顺序找到该数据为止。

 

日常生活中有许多链表的抽象运用,例如可以把“单向链表”想象成自强号火车,有多少人就只挂多少节的车厢,当假日人多需要较多车厢时可多挂些车厢,人少了就把车厢数量减少,做法十分弹性。游乐场中的摩天轮也是一种“环形链表”的应用,可以自由增加坐厢数量。

 

3.1 单向链表

单向链表(SinglyLinked List)是列表中常用的一种,它就像火车,所有节点串成一列,而且指针所指的方向一样。也就是列表中每个数据除了要存储原本的数据,还必须存储下一个数据的存储地址。所以在程序设计语言中,一个列表节点由两个字段,即数据字段和链接字段组成,列表的组成基本要件为节点(node),而且每一个节点不必存储于连续的内存地址,并且包含下面两个基本字段:

1

数据字段

2

链接字段

在“单向链表”中个节点是“列表指针头”,指向后一个节点的链接字段设为Null表示它是“列表指针尾”,不指向任何地方。

例如列表A={a,b,c,d,x},其单向列表数据结构如下:

 

在Java语言中要模拟链表中的节点,必须声明如下的Node类:

class Node

{

    intdata;

    Nodenext;

    publicNode(int data) //节点声明的构造函数

    {

        this.data=data;

        this.next=null;

    }

}

由于在Java程序设计语言中没有指针类型,我们可以声明链表LinkedList类,该类定义两个Node类型的节点指针,分别指向链表的节点和后一个节点,如下所示:

class LinkedList

{

    privateNode first;

    privateNode last;

    //定义类的方法

    ……………………

    ……………………

}

如果链表中的节点不只记录单一数值,例如每一个节点除了有指向下一个节点的指针字段外,还包括学生的姓名(name)、学号(no)、成绩(score),则其链表的图示如下:

 

在Java中要模拟链表中的此类节点,其Node类的语法可以声明如下:

class Node

{

    String  name;

    int     no;

    int     score;

    Node    next;

    publicNode(String name,int no,int score)

    {

        this.name=name;

        this.no=no;

        this.score=score;

        this.next=null;

    }

}

3.1.1  建立单向链表

现在我们试着使用Java语言的链表处理以下学生的成绩问题。学生成绩处理会有以下字段。

学号

姓名

成绩

01

黄小华

85

02

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP