
数据结构学习笔记
Birac.zhao
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构之树(一)
如果输入数据量过大,链表的线性时间消耗显然不适合。所以人们引入一种新的抽象数据类型 (ADT) 树,树结构大部分操作的运行时间平均为O(logN)。下图就是一个具体的树其中节点 A 称作根(root), 节点 D 有一个父节点 A 和两个子节点 H,I;没有子节点的的节点称作“叶”(leaf),具有相同父节点的称作“兄弟”(sibling)。很容易证明一个数的两个不同节点只能存在一条路径链接彼此。...原创 2019-10-29 08:37:03 · 215 阅读 · 0 评论 -
数据结构之表、栈和队列(四)
队列 队列本质上也是一种链表,与栈不同的是队列是在一端插入,另一端删除。换句话说,队列的模型是先进先出。 与栈类似,队列也可以用链表的方式进行实现,其运算复杂度为 O(1) ,下面介绍一种数组实现队列的方式: 队列的数据结构: 数组 Queue[] 、队列的头 Front 、队列的尾 Rear 和 队列中元素的个数 Size; 队列的操作: 元素 X ...原创 2019-10-27 22:13:11 · 177 阅读 · 0 评论 -
数据结构之表、栈和队列(三)
栈模型 栈 (stack) 本质上可以描述成一个插入和删除只能在同一个位置上进行的链表,即表的末端(top)。栈的基本操作有 Push 和 Pop,前者相当于插入,后者是删除最后插入的元素。栈也可以被称作 LIFO 表。所以任何实现表的方法都可以用来实现栈结构。 这里给出两种主流的实现方法,指针和数组。 栈的链表实现 #ifndef _Stack_h struct Node; type...原创 2019-10-26 21:21:58 · 188 阅读 · 0 评论 -
数据结构之表、栈和队列(二)
链表的 C 语言实现 我们首先介绍一下链表的实现细节,从我们之前讨论的定义来看,我们要实现链表的删除,我们必须确定所删除元素的前一个位置 (FindPrevious),如果删除的是第一个元素,那么链表的起始段就会被更改,这些都会造成一些不必要的麻烦,所以为了避免这些,我们可以通过引入一个表头的办法来实现。所谓表头就是一个没有具体数据的元素,它确定了链表的起始位置。 首先我们在一个 .h 文件中...原创 2019-04-25 07:20:18 · 193 阅读 · 0 评论 -
数据结构之表、栈和队列(一)
本系列博客主要讨论数据结构的一些基本知识,我们先从表、栈和队列入手,进而讨论树结构,以及各种结构在算法中的应用。 介绍抽象数据类型(ADT)的概念; 介绍表ADT和它的一些有效操作; 介绍栈ADT及其实现递归方面的应用; 介绍队列ADT及其在操作系统和算法设计中的应用; 抽象数据类型 在程序设计中,主例程不应超过一页,我们把程序的一些主要逻辑可以切割成不同的模块来实现(module)。每...原创 2019-04-23 07:04:17 · 202 阅读 · 0 评论