隊列與棧爲受限列表,隊列爲先入先出型列表,而棧爲先入後出型列表,有關列表的實現能夠查看 http://my.oschina.net/u/2011113/blog/514713 。ide
結構圖爲
spa
Queue實現了IQueue接口,其代碼以下所示:
.net
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; } } }
其接口定義以下:code
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的定義blog
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基本同樣,就不貼出代碼了。索引