unity中顺序表与单链表的应用。

测试结构的代码编辑步骤为:先实例化该结构,确定类型和名称,以及必须要写入的值,一般为空,例如输入最大表长。然后用名称引用方法输入数据,改变数据,在测试是否真的传入以及结构的正确性,注意头节点的处理*。

代码例如:

TestList<string> test = new TestList<string>();




void Start () {

             test.Add ("w");
        test.Add ("o");
        test.Add ("r");
        test.Add ("l");
        test.Add ("d");
        test.Add ("!");
        print(test.Count);
        test.Clear ();
        test.Add ("o");
        test.Insert (0, "are");
        test.Add ("k");
        test.Add ("");
        test.Insert (2, "you");
        print(test.Count);
        test.RemoveAt (1);
        print(test.Count);
        print (test.GetValue (3));
        print (test.GetIndex ("k"));
        print (test.GetIndex ("j"));
        print ("elements:");
        foreach (var i in test)
            print (i);
}

 

先实例化一个TestList,类型为GameObject,名为obj,然后实例化一个GAmeObject对象cube,再将cube用obj的加入方法加入到单链表中,然后输出表长为1:

1,一种直接destroy cube,再将cube赋值给GameObject实例化的cube2,输出cube2,表长,分别为cube(clond)和1.再调用obj的移除方法,移除cube,输出表长为0。

2,一种在Update中,命令用鼠标左击游戏运行场景后,再destroy cube,再将cube赋值给GameObject实例化的cube2,输出cube2和表长,分别为null和1,再调用obj的移除方法,移除cube,输出表长为0。代码如下

TestList<GameObject>obj = new TestList<GameObject>();

void Start () {
           GameObject cube = (GameObject)Instantiate (Resources.Load ("Cube"));
        obj.Add (cube);
                print (obj.Count);
        Destroy (cube);

}
void Update () {
        if (Input.GetMouseButtonDown (0)) {
            GameObject cube2 = obj.GetValue(0);
            print (cube2);
            print (obj.Count);

        }
    }

区别原因:GameObject类型为引用类型,第一种删除时,cube还未真正删除,从obj的数据结构中还能访问的到,过一会后,就彻底删除了,就不能访问的到了,所以赋值为null,但两者都会保留数据结构中的对应的指针域。Remove后就彻底删除了。

在应用List时得到的效果是一样的。

转载于:https://www.cnblogs.com/anshen-LW/p/8530079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值