ADT基础(一)-- List,Stack,and Queue 1 List 表示 数组:易于search,难于insert和remove 链表:难于search,易于insert和remove //Node类,LinkedList类 public class LinkedList{ Node head = null; class Node{ //element和next object element; Node next; Node(object e){ this.element = e; }…
[泛型可迭代的基础集合数据类型的API] 背包:就是一种不支持从中删除元素的集合数据类型——它的目的就是帮助用例收集元素并迭代遍历所有收集到的元素.(用例也可以检查背包是否为空, 或者获取背包中元素的数量) public class Bag<Item> implements Iterable<Item> Bag() 创建一个空背包 void add(Item item) 添加一个元素 boolean isEmpty() 背包是否为空 int size() 背包中的元素数量 使用Ba…
参考: https://www.cnblogs.com/Tovi/articles/6194815.html https://blog.csdn.net/dangzhangjing97/article/details/81477192 https://blog.csdn.net/qq_39747794/article/details/84478771?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute…
Stack Queue PriorityQueue BlockingQueue ArrayBlockingQueue LinkedBlockingQueue PriorityBlockingQueue DelayQueue SynchronousQueue 参考文章 1. Stack Java中Stack类继承了Vector类,在其基础上实现了了栈的功能.由于是直接继承而非通过接口进行隐藏(如Queue虽然由LinkedList实现,但对其非队列接口进行了隐藏),Java的Stack拥有Vect…
ADT基础(二)-- Tree,Heap and Graph 1 Tree(二叉树) 先根遍历 (若二叉树为空,则退出,否则进行下面操作) 访问根节点 先根遍历左子树 先根遍历右子树 退出 访问顺序为:A.B.D.H.I.E.J.C.F.G 中根遍历(若二叉树为空,则退出,否则进行下面操作) 中根遍历左子树 访问根节点 中根遍历右子树 退出 访问顺序为:H.D.I.B.J.E.A.F.C.G 后根遍历(若二叉树为空,则退出,否则进行下面操作) 后根遍历左子树 后根遍历右子树 访问根节点 退出 访…
Java集合的Stack.Queue.Map的遍历   在集合操作中,常常离不开对集合的遍历,对集合遍历一般来说一个foreach就搞定了,但是,对于Stack.Queue.Map类型的遍历,还是有一些讲究的.   最近看了一些代码,在便利Map时候,惨不忍睹,还有一些是遍历错误,忽略了队列.栈与普通Collection的差别导致的,这些代码就不作为反面教材了.   下面是常用的写法:   一.Map的遍历   import java.util.Iterator; import java.uti…
怎么说呢,deque是一种双向开口的连续线性空间,至少逻辑上看上去是这样.然而事实上却没有那么简单,准确来说deque其实是一种分段连续空间,因此其实现以及各种操作比vector复杂的多. 一.deque的中控器 deque是有一段一段的定量连续空间构成,采用一块所谓的map(当然不是map容器)作为主控.map是一小块连续空间,其中每一个元素都是一个指针,指向另一段连续性空间(缓冲区).缓冲区才是deque的储存空间主体.我们可以指定缓冲区大小,默认值0表示使用512字节缓冲区.deque设计…
用python实现一个极简的stack和queue,那是so easy的事情了,简洁易懂,适合小白~ 直接上代码吧: node: class LinkNode: def __init__( self, value ): self.value = value self.next = None stack: class Stack: def __init__( self ): self.top = None def peek( self ): if not self.top: return None…
C++ STL中独立的序列式容器只有vector,list,deque三种,stack和queue其实就是使用容器适配器对deque进行了封装,使用了新接口. 使用标准库的栈和队列时,先包含相关的头文件 #include<stack> #include<queue> 定义栈如下: stack<int> stk; 定义队列如下: queue<int> q; 栈提供了如下的操作 s.empty()             如果栈为空返回true,否则返回fals…
我们知道,stack和queue是C++中常见的container.下面,我们来探究下如何以stack来实现queue,以及如何用queue来实现stack. 首先,先了解下stack与queue的基本属性. 一.stack 1,参数要求  stack模板类需要两个参数:一个元素类型,一个容器类型.容器类型缺省为deque. 2,基本操作 入栈:s.push(element);element加入栈顶. 出栈:s.pop(),栈顶元素被删除,无返回值. 访问栈顶:s.top().取得栈顶元素. 判…