受限列表 队列与栈

队列与栈为受限列表,队列为先入先出型列表,而栈为先入后出型列表,有关列表的实现可以查看 http://my.oschina.net/u/2011113/blog/514713 。

结构图为

Queue实现了IQueue接口,其代码如下所示:

package tunie.struct.group
{
	/**
	 * Tunie
	 * Oct 9, 2015 3:09:59 PM
	 * <b>Queue主要功能如下</b>
	 * <li>队列
	 */
	public class Queue extends Group implements IGroup, IQueue
	{
		protected var _list:IList;

		public function Queue()
		{
			_list = new ArrayList();
		}

		public function inQueue(value:*):void
		{
			_list.add(value);
		}

		public function outQueue():*
		{
			return _list.removeAt(0);
		}

		public function frontQueue():*
		{
			return _list.obtain(0);
		}

		public function obtain(index:int):*
		{
			return _list.obtain(index);
		}

		override public function clear():void
		{
			_list.clear();
		}

		override public function contain(value:*):Boolean
		{
			return _list.contain(value);
		}

		override public function get isEmpty():Boolean
		{
			return _list.isEmpty;
		}

		override public function get size():int
		{
			return _list.size;
		}

	}
}

其接口定义如下:

package tunie.struct.group
{
	/**
	 * Tunie
	 * Oct 9, 2015 2:51:37 PM
	 * <b>IQueue主要功能如下</b>
	 * <li>队列
	 */
	public interface IQueue extends IGroup
	{
		/**
		 * 入队(队尾入),队发生变化
		 * @param value
		 */
		function inQueue(value:*):void;
		/**
		 * 出队(队头出),队发生变化
		 * @return 
		 */
		function outQueue():*;
		/**
		 * 读队头,队不发生变化
		 * @return 
		 */
		function frontQueue():*;
		/**
		 * 根据队列索引取得值 
		 * @param index
		 * @return 
		 */
		function obtain(index:int):*;
	}
}

再贴出IStack的定义

package tunie.struct.group
{
	/**
	 * Tunie
	 * Oct 9, 2015 3:13:32 PM
	 * <b>IStack主要功能如下</b>
	 * <li>栈
	 */
	public interface IStack extends IGroup
	{
		/**
		 * 入栈,栈发生变化
		 * @param value
		 */
		function push(value:*):void;
		/**
		 * 出栈,栈发生变化
		 * @return 
		 */
		function pop():*;
		/**
		* 根据队列索引取得值 
		* @param index
		* @return 
		*/
		function obtain(index:int):*;
	}
}

实现跟Queue基本一样,就不贴出代码了。

时间: 2024-10-12 01:03:09

受限列表 队列与栈的相关文章

数据结构之队列和栈

No.1 抽象数据类型栈的定义 栈是限定在队尾进行操作的线性表,因此对于栈来说,队尾有特殊意义,称为栈顶,表头端成为栈底,没有任何元素的栈称为空栈 特点: 它是线性表 这个线性表只能在栈顶操作 No.2 栈的表示 栈的先进后出原则 使用栈存储数据元素,对数据元素的存和取有严格的限定,数据按照一定的顺序存储到栈中,当需要调取栈中的数据元素时,需要将该数据元素之后进栈的数据进行弹栈,该数据元素才能从栈中取出来 栈操作数据元素的方法 入栈 数据元素用栈的数据结构存储起来,也叫压栈 出栈 将数据元素从栈

数据结构复习--栈和队列(1)--栈

1.栈和队列简介: 栈和队列是非常重要的两种数据结构,在软件设计中应用很多.栈和队列也是线性结构,线性表,栈和队列这三种数据元素和数据元素间的逻辑完全相同.差别是线性表的操作不受限制,而栈和队列的操作收到限制,栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其它操作在表的另一端进行,所以把栈和队列称为操作受限的线性表 栈: 栈(Stack)是操作限定在表的尾端进行的线性表.表尾由于要进行插入,删除等操作,所以,它具有特殊含义,把表尾成为栈顶(Top),另一端是固定的,叫栈底(Botto

[LeetCode] 225. 用队列实现栈

1.单纯用list就可以实现,但并未用到队列相关知识. class MyStack: def __init__(self): """ Initialize your data structure here. """ self.stack = [] def push(self, x): """ Push element x onto stack. :type x: int :rtype: void "&quo

编程题目: 两个队列实现栈(Python)

感觉两个队列实现栈 比 两个栈实现队列 麻烦 1.栈为空:当两个队列都为空的时候,栈为空 2.入栈操作:当队列2为空的时候,将元素入队到队列1:当队列1位空的时候,将元素入队到队列2: 如果队列1 和 队列2 都为空的时候,那就选择入队到队列1. 3.出队操作:当两个队列都为空的时候,引发错误"栈为空": 当队列2位空的时候,如果队列1中只有一个元素,则直接将队列1中的元素出队: 如果队列1不止一个元素的时候,就将队列1的元素出队然后入队到队列2,知道队列1中只有一个元素,然后将队列1

C语言算法系列---1.队列和栈

写在前面:在家玩了好久,实在是不知道干嘛了,突然想找些事做,现在是时候做些什么了.这些东西不见得多高深,也可能很简单,但很基础,也无法忽视.同时,也是自己学习走过的一条路. 这是开头,就写写C的队列和栈的一些算法吧. 首先是栈的一些基础功能的实现,先贴代码: #include<stdlib.h> #include<stdio.h> typedef int SElemType; //声明栈元素类型为int typedef int Status; //函数返回值的类型为int #def

剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈

题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能. 我们通过一个具体的例子来分析该队列插入和删除元素的过程.首先插入一个元素a,不妨先把它插入到stack1,此时stack1 中的元素有{a},stack2为空.再压入两个元素b和c,还是插入到stack1中,此时stack1中的元素有{a,b,c},其中c位于栈顶,而stack2仍然为空. 这个时候,我们试着删除从队列中删除一个元素.

数据结构(7)----栈与队列之栈的应用四则运算表达式求值

栈与队列之栈的应用四则运算表达式求值 栈在四则运算表达式求值的应用为逆波兰表达式(后缀表达式) 普通算式(中缀表达式):9 + (3 - 1) * 3 + 10 / 2     ---(1) 逆波兰表达式(后缀表达式):9 3 1 - 3 * + 10 2 /         ---(2) 1:逆波兰表达式的计算规则 从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进行运算,再把运算结果进栈,一直到最终获得结果.接下来我们以(2)式为例:

数组的队列和栈方法

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>数组的队列和栈方法</title></head><body><script>// 栈是一种LIFO(Last-In-First-Out后进先出)的数据结构,js中的push()和pop()类似栈的行为// 队列是一种FIFO(

1.3 背包、队列和栈

知识点 背包:只进不出,迭代顺序不确定(即无先后顺序) 队列:先进先出 栈   :后进先出 两种基础数据结构:数组和链表 数据结构 优点 缺点 数组 通过索引可以访问任意元素 在初始化时就需要知道元素的数量 链表 使用的空间大小和元素数量成正比 需要通过引用访问任意元素 练习 1.3.1 为FixedCapacityStackOfStrings添加一个方法isFull().       /*其中注意N的含义,别和数组下标完全混淆*/ public class FixedCapacityStack