数据结构之线性表链式存储(一)——初始化和正序输出
线性表之链式存储(一)
介绍链表
之前刚学了线性表的顺序存储,都说万事开头难,但是现在已经开始学数据结构一周了,感觉不是很难的样子,但是,诶!今天所学的链表可真的挺让我头疼的。
为什么说呢?首先我们得先了解链表的概念,什么是链表。在我看来链表就是用绳子把一组数据给串联起来,让数据一个接着一个。 只能从数据的头开始往后的遍历链表,我们一般称之为单链表。而能够从两头都能够遍历的链表我们称之为双链表,当然后面还有循环链表那种成环状的链表。
但是今天我所写的仅仅是我个人对单链表的一些认识,单链表一般由两部分组成,其中一个是存放数据的部分,另一个是存放下一个数据的地址部分,知道了它大概的数据组成,我们接下来就可以对他进行初始化了。
链表的初始化
上面看了单链表的数据结构,下面让我们来对他进行初始化吧。
带头结点链表和不带头结点链表的区别
链表中第一个结点的存储位置叫做头指针这点很重要,一个链表可以没有头结点,但一定得有头指针。
想看详细的可以点击这里,感觉这位老哥写的挺好的(网址是:https://www.jianshu.com/p/580ddaca13d5)。
带头结点链表的初始化
图上的初始化是存放了数据1-7的带头结点单链表。
不带头结点链表的初始化
图上的初始化是存放了数据1-7的不带头结点单链表。
链表的正序输出
学代码都是从输入输出开始的,现在就让我们看看自己能不能把刚刚存入的数据正确输出吧。
带头结点链表的正序输出
这里我写的想法就是首先我们得判断这个链表的是不是存在,如果不存在就直接输出链表为空就好了,那如果链表存在的话,我们再去看输出数据,因为P是用来存放头结点的,那我们直接从P->Next开始输出。
不带头结点链表的正序输出
学过C语言来说,这两种其实都是一种方法的两种不同表达,别人用的是for语句,而我用的是while语句。这个函数就比较好理解也没啥需要特别说明的了。
主函数和结果
最后放一个主函数的图。
带头结点的单链表输出结果
不带头结点的单链表输出结果