这是一个试验代码,原问题是,游戏的某ui上有一竖列items,最开始items都没有
解锁,每当其中一个解锁了就会排在第一的位置。。。
这个小实验初始化10个item,用0--9表示每个item,双向链表实现是最快的,当然
需要另开一个数组记录每个item对应到哪个引用(引用的意思类似于指针),
该代码是在monodevelop上单独运行的(新建一个解决方案,然后建个C#控制台工程)
//using UnityEngine;
using System;
using System.Collections;
public class Node{
public Node(){
}
public int x;
public Node pre,nex;
}
public class BinaryList{
const int Count = 10;
static Node []index=new Node[Count];
static Node head = new Node ();
//Node []index;//=new Node[Count];
//Node head ;//= new Node ();
public static void Main(){
Node pre;
head.x = 0;
head.pre=null;
pre=head;
index[0]=pre;
for(int i=1;i<Count;i++)
{
Node N=new Node();
N.x=i;
index[i]=N;
pre.nex=N;
N.pre=pre;
pre=N;
}
pre.nex=null;
Func (0);
Func (9);
Func(2);
Func (4);
Func (5);
pre = head;
while (pre!=null) {
Console.WriteLine (pre.x);
pre=pre.nex;
}
}
static void Func(int k)
{
Node N = index [k];
if (N.pre == null)//当前要更新第一个节点,直接返回不用考虑
return;
if (N.nex == null) {//当前是最后一个节点
N.pre.nex=null;
N.pre=null;
N.nex=head;
head.pre=N;
head=N;
return ;
}
//其他一般情况
N.pre.nex = N.nex;
N.nex.pre = N.pre;
N.pre=null;
N.nex=head;
head.pre=N;
head=N;
return ;
}
}