/WD-DS-2020

王道《数据结构》2020版

Primary LanguageC++

王道《数据结构》2020 版 习题代码实现


由于路径依赖比较麻烦,直接把整个 codeblocks(V17.12) 工程上传了,直接打开 WD_DS.workspace。

各章节习题放在各章节文件夹中,各种数据结构的基本实现放在单独的文件夹中,供习题调用。

为了练习 C/C++ 的各种特性,不同的章节用了不同的实现方式,有些地方不能完全按照王道书上的方式实现。例如,链表中把结点结构体放在了 private 域,导致习题中不能使用结点指针访问的方式,只能通过序号调用,这样就造成有些习题的效率很低(其实只要把结点结构体放到 public 域就可以解决这一问题,这里也是逼着自己再用指针方式实现一遍吧)。后面如果有时间,二刷数据结构的时候再用《王道》的指针方式实现一遍(已实现)。


文件夹说明

章节

  • chapter2 —— 第二章习题

    • 在 main 文件中用宏选择编译哪一节
    • chapter2_2 全部完成,题目实现放在 chapter2_2.cpp
    • chapter2_3 题目实现放在 chapter2_3.cpp 中,只完成一小部分,主要放在上级 chapter2_3 中实现
  • chapter2_3 —— 第二章 第 3 节习题

    • 题目实现放在 chapter2_3_wd.cpp 中
    • chapter2 中 2.3 节使用的链表结点设为 private 属性,不能使用结点指针访问结点,所以算法实现很浪费时间,这里单独将链表结点设为 public 属性,使用与《王道》类似的指针方式实现,类定义在 linked_list/linked_list_wd.h 中
  • chapter3 —— 第三章数据结构实现

    • 本节题目无须代码实现,所以这里只做代码测试。内容包括:
      • 顺序栈(完成)
      • 顺序队列(完成)
      • 链栈(完成)
      • 链队(未完成)
    • todo
      • 中缀表达式转后缀表达式(栈)
      • 由后缀表达式计算表达式的值(栈)
      • 括号匹配(栈)
  • chapter4 —— 第四章数据结构实现

    • todo
      • 二叉树的四种遍历算法(完成)
      • 先序、中序、后序遍历的非递归算法(借助栈)(完成)
      • 建立线索二叉树
      • 线索二叉树的遍历

数据结构

  • sequence_list —— 顺序表(大部分用 C 语言风格实现,使用函数和结构体)

    • 需要手动修改数据类型的类型转换(typedef),在 .h 文件
  • linked_list —— 链表(完全用 C++ 风格实现,使用类)

    • 没有使用模板类,需要手动修改数据类型的类型转换(typedef),在 .h 文件
    • 各种类型链表都在这里实现
    • 目前只实现了带头结点的单链表和不带头结点的单链表,循环链表(带或不带头结点),循环双链表(带或不带头结点)都只预留了定义,暂未实现
  • linked_list_wd 文件中将链表结点设为 public 属性,与《王道》方法类似

  • sequence_stack —— 顺序栈(用 C 语言风格实现,使用函数和结构体)

    • 需要手动修改数据类型的类型转换(typedef),在 .h 文件
  • sequence_queue —— 顺序队列(用 C 语言风格实现,使用函数和结构体)

    • 需要手动修改数据类型的类型转换(typedef),在 .h 文件
  • linked_stack —— 链栈

  • linked_queue —— 链队

  • binary_tree —— 二叉树

    • 使用模板类
  • 部分代码借鉴自清华邓俊辉老师的课程配套代码


其他

  • test_set —— 测试数据集
    • 为方便题目测试数据的输入及管理,使用文件读取的方式获取测试数据。