当前位置:首页 > 计算机理论 > 数据结构课后习题答案
《数据结构教程(第3版)》电子书封面

数据结构教程(第3版)

  • 发布时间:2021年04月07日 15:02:42
  • 作者:李春葆 尹为民
  • 出版:清华大学出版社
  • 大小:735 KB
  • 类别:数据结构资料
  • 格式:PDF
  • 评分:8.6

    数据结构教程(第3版) 课后答案

      给大家带来的是关于数据结构相关的课后习题答案,介绍了关于数据结构教程、数据结构方面的内容,本书是由清华大学出版社出版,资源格式为PDF,大小735 KB,李春葆 尹为民编写,目前高等院校数据结构类教材综合评分为:9.5分

      Tags:数据结构 数据结构教程 

      《数据结构教程(第3版)》内容介绍

      《数据结构教程(第三版)上机实验指导》是2012年清华大学出版社出版的图书。

      本书是《数据结构教程(第3版)》(李春葆编著,清华大学出版社出版)的配套上机实验指导书。两书章次一一对应,内容包括绪论、线性表、栈和队列、串、数组和稀疏矩阵、递归、树形结构、图、查找、内排序、外排序、文件和综合实验题解析。书后附录中给出了VC++6.0环境下编写C程序所需要的基本知识及学生提交的实验报告格式。

      目录

      • 第1章 绪论——上机实验题1解析
      • 实验题1.1 求素数
      • 实验题1.2 求一个正整数的各位数字之和
      • 实验题1.3 求一个字符串是否为回文
      • 第2章 线性表——上机实验题2解析
      • 实验题2.1 实现顺序表各种基本运算的算法
      • 实验题2.2 实现单链表各种基本运算的算法
      • 实验题2.3 实现双链表各种基本运算的算法
      • 实验题2.4 实现循环单链表各种基本运算的算法
      • 实验题2.5 实现循环双链表各种基本运算的算法
      • 实验题2.6 求集合(用有序单链表表示)的并、交和差运算
      • 实验题2.7 求两个多项式相加运算
      • 第3章 栈和队列——上机实验题3解析
      • 实验题3.1 实现顺序栈各种基本运算的算法
      • 实验题3.2 实现链栈各种基本运算的算法
      • 实验题3.3 实现顺序队列各种基本运算的算法
      • 实验题3.4 实现链队各种基本运算的算法
      • 实验题3.5 求解迷宫问题的所有路径及最短路径程序
      • 实验题3.6 病人看病模拟程序
      • 实验题3.7 停车场管理程序
      • 第4章 串——上机实验题4解析
      • 实验题4.1 实现顺序串各种基本运算的算法
      • 实验题4.2 实现链串各种基本运算的算法
      • 实验题4.3 顺序串的各种模式匹配运算
      • 实验题4.4 文本串加密和解密程序
      • 实验题4.5 求一个串中出现的第一个最长重复子串
      • 第5章 数组和稀疏矩阵——上机实验题5解析
      • 实验题5.1 求5×5阶螺旋方阵
      • 实验题5.2 求一个矩阵的马鞍点
      • 实验题5.3 求两个对称矩阵之和与乘积
      • 实验题5.4 实现稀疏矩阵(采用三元组表示)的基本运算
      • 实验题5.5 实现广义表的基本运算
      • 第6章 递归——上机实验题6解析
      • 实验题6.1 求解n皇后问题
      • 实验题6.2 求解背包问题
      • 第7章 树形结构——上机实验题7解析
      • 实验题7.1 实现二叉树各种基本运算的算法
      • 实验题7.2 实现二叉树各种遍历算法
      • 实验题7.3 求二叉树中从根结点到叶子结点的路径
      • 实验题7.4 由遍历序列构造二叉树
      • 实验题7.5 实现中序线索化二叉树
      • 实验题7.6 构造哈夫曼树
      • 实验题7.7 用二叉树来表示代数表达式
      • 第8章 图——上机实验题8解析
      • 实验题8.1 实现图的邻接矩阵和邻接表存储
      • 实验题8.2 实现图的遍历算法
      • 实验题8.3 求有向图的简单路径
      • 实验题8.4 求无向图中满足约束条件的路径
      • 实验题8.5 求无向图的深度优先生成树和广度优先生成树
      • 实验题8.6 采用普里姆算法求最小生成树
      • 实验题8.7 采用克鲁斯卡尔算法求最小生成树
      • 实验题S.8 采用狄克斯特拉算法求有向带权图的最短路径
      • 实验题8.9 采用弗洛伊德算法求有向带权图的最短路径
      • 第9章 查找——上机实验题9解析
      • 实验题9.1 实现顺序查找的算法
      • 实验题9.2 实现二分查找的算法
      • 实验题9.3 实现分块查找的算法
      • 实验题9.4 实现二叉排序树的基本运算算法
      • 实验题9.5 统计一个字符串中出现的字符及其次数
      • 实验题9.6 实现二叉平衡树的相关运算算法
      • 实验题9.7 实现B-树的相关运算算法
      • 实验题9.8 实现哈希表的相关运算算法
      • 第10章 内排序——上机实验题10解析
      • 实验题10.1 实现直接插入排序算法
      • 实验题10.2 实现希尔插入排序算法
      • 实验题10.3 实现冒泡排序算法
      • 实验题10.4 实现快速排序算法
      • 实验题10.5 实现直接选择排序算法
      • 实验题10.6 实现堆排序算法
      • 实验题10.7 实现二路归并排序算法
      • 实验题10.8 实现基数排序算法
      • 实验题10.9 实现可变长度的字符串序列快速排序算法
      • 实验题10.10 实现英文单词按字典序排列的基数排序算法
      • 第11章 外排序——上机实验题1l解析实现置换一选择算法
      • 第12章 文件——上机实验题12解析实现索引文件建立和查找算法
      • 第13章 综合实验题解析
      • 综合实验题1 链表综合算法设计
      • 综合实验题2 求复杂表达式的值
      • 综合实验题3 用二叉树实现家谱的相关运算
      • 附录A 使用VC++6.0系统
      • A.1 生成工程
      • A.2 生成和编辑源程序文件
      • A.3 查看类及文件
      • A.4 访问联机帮助
      • A.5 改变工程配置
      • A.6 立目标程序
      • A.7 运行程序
      • A.8 工程
      • A.9 建立控制台应用程序的快捷方式
      • A.10 调试程序
      • 附录B 实验报告格式
      • 一、设计人员相关信息
      • 二、程序设计相关信息
      • 三、程序盘

      笔记精选

      Python数据结构与算法之链表定义的使用详解

      这篇文章主要介绍了Python数据结构与算法之链表定义与用法,结合具体实例形式较为详细的分析了单链表、循环链表等的定义、使用方法与相关注意事项,需要的朋友可以参考下

      本文实例讲述了Python数据结构与算法之链表定义与用法。分享给大家供大家参考,具体如下:

      本文将为大家讲解:

      (1)从链表节点的定义开始,以类的方式,面向对象的思想进行链表的设计

      (2)链表类插入和删除等成员函数实现时需要考虑的边界条件,
      prepend(头部插入)、pop(头部删除)、append(尾部插入)、pop_last(尾部删除)

      2.1 插入:

      空链表
      链表长度为1
      插入到末尾

      2.2 删除

      空链表
      链表长度为1
      删除末尾元素

      (3)从单链表到单链表的一众变体:

      带尾节点的单链表
      循环单链表
      双链表

      1. 链表节点的定义


      class LNode:
       def __init__(self, elem, next_=None):
        self.elem = elem
        self.next = next_

      2. 单链表的实现

      重点理解插入、删除的实现及其需要考虑的边界条件:


      class LinkedListUnderflow(ValueError):
       pass
      class LList:
       def __init__(self):
        self._head = None
       def is_empty(self):
        return self._head is None
       def prepend(self, elem):
        self._head = LNode(elem, self._head)
       def pop(self):
        if self._head is None:
         raise LinkedListUnderflow('in pop')
        e = self._head.elem
        self._head = self._head.next
        return e
       def append(self, elem):
        if self._head is None:
         self._head = LNode(elem)
         return
        p = self._head
        while p.next is not None:
         p = p.next
        p.next = LNode(elem)
       def pop_last(self):
        if self._head is None:
         raise LinkedListUnderflow('in pop_last')
        p = self._head
        if p.next is None:
         e = p.elem
         self._head = None
         return e
        while p.next.next is not None:
         p = p.next
        e = p.next.elem
        p.next = None
        return e

      简单总结:

      (0)能够访问 p.next.next 的前提是 p.next 不为空;
      (1)尾部插入,如果链表不为空,需且仅需改变的是尾部节点的指针;
      (2)尾部删除,如果链表长度不为空,需且仅需改变的是倒数第二个节点的指针。

      单链表的简单变形:具有尾部节点的单链表


      class LList1(LList):
       def __init__(self):
        LList.__init__(self)
        self._rear = None
       ...

      我们仅需重写的是:头部的插入、尾部的插入、尾部的删除


      def prepend(self, elem):
       if self._head is None:
        self._head = LNode(elem)
        self._rear = self._head
       else:
        self._head = LNode(elem, self._head)
      def append(self, elem):
       if self._head is None:
        self._head = LNode(elem)
        self._rear = self._head
       else:
        self._rear.next = LNode(elem)
        self._rear = self._rear.next
      def pop_last(self):
       if self._head is None:
        raise LinkedListUnderflow('in pop_last')
       p = self._head
       if p.next is None:
        e = p.elem
        self._head = None
        return e
       while p.next.next is not None:
        p = p.next
       e = p.next.elem
       self._rear = p
       p.next = None
       return e

      单链表的变体:循环单链表


      class LCList:
       def __init__(self):
        self._rear = None
       def prepend(self, elem):
        if self._rear is None:
         self._rear = LNode(elem)
         self._rear.next = self._rear
        else:
         self._rear.next = LNode(elem, self._rear.next)
       def append(self, elem):
        self.prepend(elem)
        self_rear = self._rear.next
       def pop(self):
        if self._rear is None:
         raise LinkedListUnderflow('in pop')
        p = self._rear.next
        if p is None:
         self._rear = None
        else:
         self._rear.next = p.next
        return p.elem
       def printall(self):
        if self._rear is None:
         raise ...
        p = self._rear.next
        while True:
         print(p.elem)
         if p is self._rear:
          break
         p = p.next

      以上就是Python数据结构与算法之链表定义的使用详解的详细内容,更多请关注码农之家其它相关文章!

      以上就是本次介绍的数据结构教程(第3版)书的全部相关内容,课后答案及相关习题附件可以在下方下载,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:16/32位微机原理:汇编语言及接口技术(第2版)

      下一篇:没有了

      查看更多
      数据结构 相关资源
      数据结构C++语言描述:应用标准模板库(STL)(第2版)
      数据结构C++语言描述:应用标准模板库(STL)(第2版) PDF 高清版

      数据结构C++语言描述—应用标准模板库(STL)(第2版) 原书名:DataStructureswithC++UsingSTL,SecondEdition 作者:WilliamFordWilliamTopp 丛书名:大学计算机教育国外著名教材、教参系列 清华大学 出版日期:2003年1月 本书是ford和topp两教授1996所著“datastructureswithc++”的第2版,但在本书中应用了stl(标准模板库)。stl是ansic++1998中正式规定的,对常用的数据结构都进行了规范化并纳入其中

      立即下载
      数据结构与抽象:Java语言描述(第4版)
      数据结构与抽象:Java语言描述(第4版) PDF 清晰版

      《数据结构与抽象:Java语言描述》是一本数据结构的教材,Java语言与数据结构两条知识主线贯穿始终,这两条主线既相互独立又相互支撑。本书介绍了计算机编程中使用的数据结构和算法,包括29章,每章涉及一个ADT或其不同实现的规格说明和用法。

      立即下载
      数据结构(C++语言版)
      数据结构(C++语言版) PDF 完整第3版 立即下载
      图解数据结构:使用C++
      图解数据结构:使用C++ PDF 扫描版 立即下载
      数据结构(C语言版)
      数据结构(C语言版) PDF 完整第2版

      《数据结构(C语言版 第2版)/21世纪高等学校计算机规划教材》 在选材与编排上,贴近当前普通高等院校数据结构课程的现状和发展趋势,符合新研究生考试大纲,内容难度适度,突出实用性

      立即下载
      数据结构与抽象:Java语言描述
      数据结构与抽象:Java语言描述 PDF 完整第4版

      本书是一本数据结构的教材,Java语言与数据结构两条知识主线贯穿始终,这两条主线既相互独立又相互支撑。本书介绍了计算机编程中使用的数据结构和算法,包括29章,每章涉及一个ADT或其

      立即下载
      读者心得
      3小时29分钟前回答

      对python的链表数据结构讲解

      下面小编就为大家带来一篇python数据结构之链表的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 在程序中,经常需要将⼀组(通常是同为某个类型的)数据元素作为整体 管理和使⽤,需要创建这种元素组,⽤变量记录它们,传进传出函数等。 ⼀组数据中包含的元素个数可能发⽣变化(可以增加或删除元素)。 对于这种需求,最简单的解决⽅案便是将这样⼀组元素看成⼀个序列,⽤ 元素在序列⾥的位置和顺序,表示实际应⽤中的某种有意义的信息,或者 表示数据之间的某种关系。 这样的⼀组序列元素的组织形式,我们可以将其抽象为线性表。⼀个线……

      22小时1分钟前回答

      python学习——内置函数、数据结构、标准库的技巧(推荐)

      我作为一名python初学者,为了强化记忆有必要把看过的一些优秀的文章中一些技巧通过notebook的方式练习一次。我认为这么做有几个优点:一来加深印象;二来也可以将学习过的内容保存方便日后查阅;第三也可以培养我写博的习惯(一直都没那个习惯) jupyter notebook格式的文件github下载: 身为程序员除了需要具备解决问题的思路以外,代码的质量和简洁性也很关键,今天又学习到了一些觉得自己很高级的内容跟大家分享,内容包括: Python内置函数开始 Python对数据结构的天然支持 Python强大的标准库 选择正确的内置功能 Python有一个大型标准库,但只有一个内置函数的小型库,这些函数总是可用的,不……

      21小时7分钟前回答

      java数据结构和算法中哈希表知识点详解

      树的结构说得差不多了,现在我们来说说一种数据结构叫做哈希表(hash table),哈希表有是干什么用的呢?我们知道树的操作的时间复杂度通常为O(logN),那有没有更快的数据结构?当然有,那就是哈希表; 1.哈希表简介 哈希表(hash table)是一种数据结构,提供很快速的插入和查找操作(有的时候甚至删除操作也是),时间复杂度为O(1),对比时间复杂度就可以知道哈希表比树的效率快得多,并且哈希表的实现也相对容易,然而没有任何一种数据结构是完美的,哈希表也是;哈希表最大的缺陷就是基于数组,因为数组初始化的时候大小是确定的,数组创建后扩展起来比较困难; 当哈希表装满了之后……

      码农之家

      谭小霜 提供上传

      资源
      33
      粉丝
      10
      喜欢
      195
      评论
      8

      Copyright 2018-2021 www.xz577.com 码农之家

      版权投诉 / 书籍推广:520161757@qq.com