栈与队列

数据结构,是数据的组织形式,包括存储方式和访问方式两层含义,二者是紧密联系的。例如,数组的各元素是一个挨一个存储的,并且每个成员的大小相同,因此数组可以通过下标访问的方式,结构体的各成员也是一个挨一个存储的,但是每个成员的大小不同,所以只能用.运算符加成员来访问,而不能按下标访问。

一个问题中的存储方式和访问方式(即数据结构)就决定了解决问题可以采用说明样的算法。要设计一个算法就要同时设计相应的数据结构来支持这种算法。

用数组实现堆栈(如果堆栈中存储类型相同)

用数组实现栈

栈的特点就是“后进先出”。

用递归实现倒叙打印
用递归实现栈

回溯

迷宫问题,深度优先搜索
迷宫

深度优先是一条路走到完, 走不同需要回溯, 倒退回上一步.

广度优先, 不需要回溯, 也不需要倒退到上一步, 起始说白了, 它不像是一个人在走迷宫, 而是像是N多人, 有分工, 同时尝试多路, 但是一次只能走一步, 所以相比于深度优先, 广度优先算法实现起来, 要简单的多, 如下图:

image

队列的特点是,先进先出。

队列实现迷宫
队列迷宫

以上代码的执行,能够充分看出深度和广度优先的区别,主要还是由于数据结构决定的。

原文地址:https://www.cnblogs.com/moveofgod/p/2709276.html