队列与栈为受限列表,队列为先入先出型列表,而栈为先入后出型列表,有关列表的实现可以查看 。
结构图为
Queue实现了IQueue接口,其代码如下所示:
package tunie.struct.group{ /** * Tunie * Oct 9, 2015 3:09:59 PM * Queue主要功能如下 *
队列 */ 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 * IQueue主要功能如下 *
队列 */ 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 * IStack主要功能如下 *
栈 */ public interface IStack extends IGroup { /** * 入栈,栈发生变化 * @param value */ function push(value:*):void; /** * 出栈,栈发生变化 * @return */ function pop():*; /** * 根据队列索引取得值 * @param index * @return */ function obtain(index:int):*; }} 实现跟Queue基本一样,就不贴出代码了。