数据结构队列的实现 |
| 作者:佚名 来源:不详 更新:2007-1-13 21:00:34 错误报告 我要投稿 |
用法:
import fl.util.Queue; var q:Queue = new Queue(); q.input(1); q.input(2); q.trace(); trace(q.output()); q.trace(); Queue class: //****************************************************************************** //(FIFO) First In First Out //OK //***************************************************************************** import fl.lang.ClsError; class fl.util.Queue extends fl.Obj { private var data:Array; //数据 private var left:Number; //MIN指针 private var right:Number; //MAX指针 public function get length() { //队列的长度 return (right-left); } public function clone():Queue { return new Queue(data.slice(left, right)); } public function Queue(arr:Array) { //构造函数 ,arr :一个1维数组 left = 0; data = new Array(); if (arr) { data = arr; right = arr.length; return; } right = 0; } public function search(key:Object):Boolean { for (var i = left; i<right; i++) { if (data[i] == key) { return true; } } return false; } //init public function init():Void { //初始化 data.splice(0); left = 0; right = 0; } public function get isEmpty():Boolean { //判断是否为空 if (left == right) { return (true); } return (false); } public function input(obj:Object):Void { //入队 data.push(obj); right += 1; } public function output() { //出队 if (!isEmpty) { left += 1; return (data[left-1]); } throw new ClsError("Queue", "The queue is empty"); } public function getTop() { //返回顶端 return (data[left]); } public function dispose():Void { //释放内存 data.splice(0, left); right -= left; left = 0; } public function trace(Void):Void { //打印队列 trace("Trace Queue-----"); for (var i = left; i<right; i++) { trace("\tItem "+i+" : "+data[i]); } trace("/Trace Queue"); } } ClsError class:
class fl.lang.ClsError extends Error { var cls:String; function ClsError(_cls:String, msg:String) { cls = _cls; message = msg; } function toString() { return (name+":\n\tclass : "+cls+"\n\tmessage : "+message); } }
点击浏览该文件
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |