Action Script 双向列表

 

代码
package EView.controls
{
/*双向链表*/
public class DoubleNode
{
private var _data:*;
private var _prev:DoubleNode;
private var _next:DoubleNode;
private var _type:String

private var _hasIN:Boolean=false;

//构造函数
public function DoubleNode(initData:*,type:String)
{
_data
=initData;
_prev
=_next=null;
_type
=type;
}

public function get_hasIn():Boolean
{
return _hasIN;
}

public function set_hasIN(boolean:Boolean):void
{
_hasIN
=boolean;
}

public function get_next():DoubleNode
{
return _next;
}

public function get_prev():DoubleNode
{
return _prev;
}

public function set_next(newNode:DoubleNode):void
{
_next
=newNode;
}

public function set_prev(newNode:DoubleNode):void
{
_prev
=newNode;
}

public function get_nodeData():*
{
return _data;
}

public function get_nodeType():String
{
return _type;
}

public function set_nodeData(newData:*):void
{
_data
=newData;
}

public function addAfter(newNode:DoubleNode):void
{
newNode._next
=_next;
newNode._prev
=this;

if(_next!=null)
{
_next._prev
=newNode;
}

_next
=newNode;
newNode._hasIN
=true;

}

public function addBefore(newNode:DoubleNode):void
{
newNode._next
=this;
newNode._prev
=_prev;
if(_prev!=null)
{
_prev._next
=newNode;
}

_prev
=newNode;
newNode._hasIN
=true;
}

public function get_nodeLength():uint
{
var cursor:DoubleNode;
var length:
uint=1;
for(cursor=_prev; cursor!=null; cursor=cursor._prev)
{
length
++;
}

return length;
}

public function unlink():void
{
if(_prev!=null)
_prev._next
=_next;

if(_next!=null)
_next._prev
=_prev;

_next
=_prev=null;
_hasIN
=false;
}
}


}

 

posted @ 2010-07-02 16:55  宝哥哥  阅读(147)  评论(0编辑  收藏  举报