有兴趣利用链表写贪吃蛇的看这篇
数据结构与指针-线性表之单链表(头插法和尾插法)【上】在这里
链表也是线性表的一种与顺序表不同的是,它在内存中不是连续存放的在C语言中,链表是通过指针相关实现的而单链表是链表的其中一种,关于单链表就是其节点中有数据域和只有一个指向下个节点嘚指针域
创建单链表的方法有两种,分别是头插法和尾插法
所谓头插法,就是按节点的逆序方法逐渐将结点插入到链表的头部反之尾插法就是按节点的顺序逐渐将节点插入到链表的尾部。
相对来说头插法要比尾插法算法简单,但是最后产生的链表是逆序的即第一個输入的节点实际是链表的最后一个节点。但是在实际情况下常常选用不同的建立方式
而为了习惯,通常用尾插法来创建链表这篇文嶂主要以尾插法为例,但是将头插法的源码放在最后看完头插法后自己很好理解。
定义两个指针 (snake一直相当于int void这种的数据类型)
给tail指针指向的这个结构体赋值 因为其中的next指针域不知道指向哪里先将它指向NULL(类似于void类型的指针我们不知道它下面会指向哪里)
将head指向的这个结構体中的next指针赋予tail指针
将尾指针赋予下一个头指针的值
然后我们将以上代码写入for循环
继续以head开辟一个新的snake类型的结构体
此时是不是2中的next已經指向1tail指向2,head指向了3
于是也就完成了1.2的链接1.2形成一个链表
只需要继续循环便可开辟内存并且链接起来形成链表
这样就可以将很多分散泹是结构相同的结构体关联起来
// 判断数据传入是否正确 // 创建新结点并判断创建是否成功 // 给结点成员变量赋值 // 让新结点变为链表的第一个节點
最后cpp模板实现链表