接下来,我们会构建一个简单类,作为这种模型的一个基础构成。我们定义这个为LinkNode 类
package
{
//节点
public class LinkNode
{
public var data:Object;
public var next:Object;
public function LinkNode()
{
}
}
}
这个类,只是有两个属性,第一个属性是记录对象,第二个数据是记录下一个节点。(这次我们只用单向的链表,后面的变化会很多种情况)
第二个类为LinkList 类,这个类只有三个方法,一个是插入的操作,一个获取节点的操作,一个是获取节点数组的方法。这种结构可以写的很复杂,但是鉴于实验,我更加希望可以简单易懂。
package
{
public class LinkList
{
private var list:Array = [];
private var firstNode:LinkNode;
private var tempNode:LinkNode;
public function LinkList()
{
}
//插入操作
public function insert(node:*):void
{
if (firstNode==null)
{
firstNode=new LinkNode();
firstNode.data = node;
firstNode.next = null;
list.push(firstNode);
tempNode = firstNode;
}
else
{
var newNode:LinkNode=new LinkNode();
newNode.data = node;
newNode.next = tempNode;
list.push(newNode);
tempNode = newNode;
firstNode.next = tempNode;
}
}
//获取某一个节点
public function getNode(node:*):LinkNode
{
var len:int = list.length;
for (var i:int=0; i<len; i++)
{
if (list[i].data == node)
{
return list[i];
}
}
return null;
}
public function get source():Array
{
return list;
}
}
}
插入方法是参考这个图的思路来做,有了这个方法之后,我们可以对数据进行插入,它的创建思路很简单,当第一个点A为空的时候,创建并插入到数值里面,当第二个点的时候,它的指向就指向于A点,但是A的指向于指向到B,同理,当创建到C点的时候,C指向到B,而A需要重新指向以保证它形成一个回路.
第一步: A--->null,
第二步:B----->A [ A--->B]
第三步:C----->B---->A, [A---->C]
第四步:D---->C--->B---->A, [A---->D]
通过使用这个模型,我们就可以来点有意思的程序了。