C++的STL标准模板库提供了队列和栈的基本操作。下面通过两个demo分别介绍STL队列和STL栈的使用。
Demo1:STL队列
【题目】卡片游戏(题目来自刘汝佳《算法竞赛入门》)
桌上又一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n。当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。输入n,输出每次扔掉的牌,以及最后剩下的牌。
样例输入...
分类:
编程语言 时间:
2015-06-12 15:01:16
阅读次数:
328
1.栈2.队列栈:一种先进后出的线性数据结构。也是一种特殊的线性表结构,其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。 1 public class Stack{ 2 private long[] arr; 3 private int top; 4 5 ...
分类:
其他好文 时间:
2015-06-02 21:26:06
阅读次数:
129
一.先来说说数组的不足(也可以说集合与数组的区别):1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的2.数组要声明元素的..
分类:
编程语言 时间:
2015-06-02 18:16:47
阅读次数:
334
【题目】用两个栈实现一个队列,分别完成在队列尾部插入结点和在队列头部删除结点的功能。【分析】假设两个栈,栈1和栈2,来实现队列,栈1用来入队,栈2用来出队。
入队时,将元素全部压入栈1;
出队时,如果栈2不为空,就直接pop栈2,否则,就将栈1的所有元素pop到栈1里,再把栈2栈顶弹出。
由图所示,abcdef依次入队,压栈,出队时先将元素从s1弹出,压入s2,从s2出栈实现出队,即使后面再有...
分类:
其他好文 时间:
2015-05-27 10:23:41
阅读次数:
166
LinkedListLinkedList基于双向循环链表实现。也可以被当做堆栈,队列或双端队列进行操作。非线程安全。下面直接贴ArrayList的Java实现(只贴了部分代码),来源JDK1.8.0_25/src.zip。 /** * ****双向链表对应的数据结构********* ...
分类:
编程语言 时间:
2015-05-24 21:40:43
阅读次数:
138
LinkedList
LinkedList基于双向循环链表实现。也可以被当做堆栈,队列或双端队列进行操作。非线程安全。下面直接贴ArrayList的Java实现(只贴了部分代码),来源JDK1.8.0_25/src.zip。
/**
* ****双向链表对应的数据结构*********
* 包含:节点值item
* 前驱 pre
* ...
分类:
编程语言 时间:
2015-05-20 22:22:46
阅读次数:
189
一、队列(Queue/Deque)
Queue:单向
队列通常FIFO(先进先出)、优先级队列和堆栈队列(后进先出)
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
eleme...
分类:
编程语言 时间:
2015-05-19 16:42:50
阅读次数:
163
队列和栈1. Queue队列(Queue)是常用的数据结构,可以将队列看成特殊的线性表,队列限制了对线性表的访问方式:只能从线性表的一端添加(offer)元素,从另一端取出(poll)元素。队列遵循先进先出(FIFO First Input First Output )的原则。JDK中提供了Queu...
分类:
其他好文 时间:
2015-05-12 11:08:49
阅读次数:
107
抽象数据类型(abstract data type ADT)是带有一组操作的对象的集合。一、 表ADT表的数组实现数组实现时,插入和删除的花费可能会比较大,这样要看操作发生在什么地方。最坏情况如,在0处插入,和删除第一个元素。此时为O(N)。如果表是通过在高端插入,其后只发生对数组的查找访问(fin...
分类:
其他好文 时间:
2015-05-10 22:15:49
阅读次数:
121