数据结构队列的实现


  来源:闪吧 | 作者: | 浏览: | 发送给好友 | 添加到收藏夹
  用法:
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);
 }
}

点击浏览该文件

上一篇
闪动论坛 打印此页 发送给好友 返回顶部