Unity版本: 5.3.4
使用语言: C#
First
模块化编程是大多数初学者必经之路,然后可能你走向了结构化编程,链表是一种典型结构模式,它的出现克服了数组必须预先知道大小的缺陷,听不懂?你只需要记住,链表结构非常牛叉就可以了,学习这种结构对我们的逻辑思维有很大提升。
WHAT
什么是链表结构呢?
链表是一种物理存储单元上非连续、非顺序的存储结构。比如A->B->C,这种结构,我们可以理解为A连接着B,B连接C,像这种结构我们就叫做链表结构。对了,火车的车厢,其实就是链表的结构的最好说明。
WHY
为什么要有链表结构呢?
学过计算机的都知道数组(Array),数组常用切好用,但也存在问题。首先,数组必须需要知道空间大小(int[] age = new int[100], 必须声明长度),其次,对于元素之间插入、删除操作效率很低(如何在数组中间插入一个元素?)。
链表的出现,完美的解决了这些问题。
HOW
如何在计算机中使用链表结构?
首先我们需要声明一种结构
//链表结构: 构造节点 - 连接节点
//Template
class Node
{
public int num;
//指向下一个元素
public Node next;
}
我们可以把上面的这种结构看做是一个礼品盒,可以存放整形数值。
然后我们创建一个MyList先生,这位先生就使用Node去存放整形物品,而且使用了链表结构哦!
class MyList
{
public Node currentNode;
public Node point;
public MyList()
{
currentNode = new Node();
}
//存放物品
public void Add(int value)
{
//第一次
if(point == null)
{
currentNode.num = value;
point = currentNode;
}
else //2 3 4..... 次
{
Node temp = new Node();
temp.num = value;
point.next = temp;
//更新指针
point = temp;
}
}
}
然后,我们可以在客户端测试一下:
public static void Main (string[] args)
{
MyList<int> mList = new MyList<int>();
//添加元素
mList.Add(1);
mList.Add(11);
mList.Add(111);
mList.Add(1111);
while(mList.currentNode != null)
{
Console.WriteLine (mList.currentNode.num);
mList.currentNode = mList.currentNode.next;
}
}
我们自己定义的一个整形集合就这样👌了。它有两个优点:可以存放任意多个元素!方便元素的插入和删除。
WHERE
应用场景:集合(动态数组)、贪吃蛇、地图的循环生成、老虎机效果等等,链表可以帮助我们完成很多事情。
Last
#成功的道路没有捷径,代码这条路更是如此,唯有敲才是王道。