一个C#程序,用到了双向链表

这是一个试验代码,原问题是,游戏的某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 ;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值