用法:
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:
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");
}
}
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);
}
}
var cls:String;
function ClsError(_cls:String, msg:String) {
cls = _cls;
message = msg;
}
function toString() {
return (name+":\n\tclass : "+cls+"\n\tmessage : "+message);
}
}
