10、二叉树:二叉树到底长什么样子

你好,我是王健伟。 前面讲解过的线性表,是以线性结构来组织数据的,数据之间只是简单的前后次序关系。但问题在于,线性结构对数据的组织结构过于单一,对于数据的访问速度也过于缓慢,在一些复杂的应用领域中,这种简单的线性结构不足以表达问题。 这个时候,我们就...

9、队列:如何实现数据的先进先出

你好,我是王健伟。 上节课我们提到的“栈”,用的是“桶”和“抽屉”做类比,实现的是先进后出。这节课我们来聊“队列”,根据名字想象一下,它实现的是不是先进先出了呢? 是的。队列也是一种受限的线性表,它的特点是在一端进行插入操作,在另一端进行删除操作(与...

8、栈:如何实现数据的后进先出

你好,我是王健伟。 从“链表”毕业之后,我们就要进入“栈”的学习了。作为一种耳熟能详的数据结构,“栈”到底是个什么东西呢? 还记得我们之前提到过的线性表吗?没错,栈仍旧是一种线性表。不过它只能在一端进行插入和删除操作,先入栈的数据只能后出来,而后入栈...

7、静态链表:用一维数组表达的链表

你好,我是王健伟。 前面已经聊了很多种链表,今天我们再来聊一聊最后一种链表——“静态链表”。 有些早期的高级语言,并没有指针这种概念,之前我们探讨的链表实现方法在这些高级语言中并不适用。于是,用一维数组代替指针来描述单链表的想法应运而生,这种用一维数...

6、循环链表:如何更方便地寻找数据

你好,我是王健伟。 今天我要和你分享的主题是“循环链表”。循环链表可以分为单(单向)循环链表和双(双向)循环链表,只需要在原有单链表或者双链表基础之上做一些比较小的改动即可。 那么,为什么一定要在单链表或者双链表基础上引入循环链表呢?接下来,我们就从...

189101112243