Unity双向链表的使用
背景
双向链表:有两个指针,一个指向前一个节点,一个后一个节点。
优点:可以找到前驱和后继,可进可退;
缺点:增加删除节点复杂,需要多分配一个指针存储空间。
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
public class Test18 : MonoBehaviour
{
private LinkedList<int> linkList = new LinkedList<int>();
private StringBuilder _sb=new StringBuilder();
// Start is called before the first frame update
void Start()
{
for (int i=0;i<10;i++)
{
if (i % 2 != 0)
linkList.AddFirst(i);//奇数放前边
else
linkList.AddLast(i);//偶数放后边
}
Debug.LogError(Log());// 9 7 5 3 1 0 2 4 6 8
}
private string Log()
{
_sb.Clear();
foreach (var temp in linkList)
{
_sb.Append(temp);
_sb.Append(" ");
}
return _sb.ToString();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
var targetNum = UnityEngine.Random.Range(0, 15);
var node = linkList.Find(targetNum);
if (node!=null)
{
Debug.LogError($"存在:{targetNum }");
linkList.AddBefore(node,88);//在node之前加88
linkList.AddAfter(node, 66);//在node之后加66
Debug.LogError(Log());
Debug.LogError(node.Next.Value);//66
Debug.LogError(node.Next.Previous.Value);//node后边的前边,是本体targetNum
Debug.LogError(node.Previous.Value);//88
}else
{
Debug.LogError($"不存在:{targetNum }");
}
}
}
}
这篇讲解的十分形象,可以理解下:
https://blog.csdn.net/hadesnyx/article/details/107329445