数据结构之线性表链式存储(一)——初始化和正序输出

介绍链表

  之前刚学了线性表的顺序存储,都说万事开头难,但是现在已经开始学数据结构一周了,感觉不是很难的样子,但是,诶!今天所学的链表可真的挺让我头疼的。

  为什么说呢?首先我们得先了解链表的概念,什么是链表。在我看来链表就是用绳子把一组数据给串联起来,让数据一个接着一个。 只能从数据的头开始往后的遍历链表,我们一般称之为单链表。而能够从两头都能够遍历的链表我们称之为双链表,当然后面还有循环链表那种成环状的链表。

  但是今天我所写的仅仅是我个人对单链表的一些认识,单链表一般由两部分组成,其中一个是存放数据的部分,另一个是存放下一个数据的地址部分,知道了它大概的数据组成,我们接下来就可以对他进行初始化了。
  

单链表的数据结构
  

链表的初始化

  上面看了单链表的数据结构,下面让我们来对他进行初始化吧。
  

空单链表的初始化

带头结点链表和不带头结点链表的区别

  单链表为什么要设置头结点
  

  链表中第一个结点的存储位置叫做头指针这点很重要,一个链表可以没有头结点,但一定得有头指针。
  
  
在这里插入图片描述
想看详细的可以点击这里,感觉这位老哥写的挺好的(网址是:https://www.jianshu.com/p/580ddaca13d5)。

带头结点链表的初始化

存放数据1-7的初始化带头结点单链表
  
  图上的初始化是存放了数据1-7的带头结点单链表。

  

不带头结点链表的初始化

存放数据1-7的初始化不带头结点单链表
  
  图上的初始化是存放了数据1-7的不带头结点单链表。
  

链表的正序输出

  学代码都是从输入输出开始的,现在就让我们看看自己能不能把刚刚存入的数据正确输出吧。
  

带头结点链表的正序输出

在这里插入图片描述
  这里我写的想法就是首先我们得判断这个链表的是不是存在,如果不存在就直接输出链表为空就好了,那如果链表存在的话,我们再去看输出数据,因为P是用来存放头结点的,那我们直接从P->Next开始输出。
  

不带头结点链表的正序输出

这是自己写的输出函数
  在这里插入图片描述
  
  
  学过C语言来说,这两种其实都是一种方法的两种不同表达,别人用的是for语句,而我用的是while语句。这个函数就比较好理解也没啥需要特别说明的了。

主函数和结果

  最后放一个主函数的图。
  主函数
  
  带头结点的单链表输出结果
  
在这里插入图片描述
  
  不带头结点的单链表输出结果
  
在这里插入图片描述

最后有讲的不正确的地方,欢迎大家指正!