链表

来源:互联网 发布:宋哲宗赵煦 知乎 编辑:程序博客网 时间:2024/06/05 07:25


链表是一种重要的数据结构,链表分为多种,有单向链表、双向链表、循环链表。这里主要讲一下单向链表和双向链表。

首先链表由n个节点构成,分为链状(单、双向链表)和环状(环状链表)。其次,每个节点由数据域、引用域构成;数据域存放的是各种数据类型的数据,引用域存放的是与该节点相关联的节点的地址,例如单向链表中的引用域存放的是该节点下一节点的地址,而双向链表中的引用域还包括该节点前一结点的地址。

链表中有几个名词:

头结点:链表中的第一个节点,若链表为空,则头结点为空。

尾节点:链表中的最后一节点,同样若链表为空,则尾节点为空。

直接后继:该节点的下一节点。

直接前区:该节点的前一结点。

下面看看链表的构造过程:

构造链表前要先定义一个节点类,该类包含两个私有的数据成员,及上面说的数据域与引用域,并给出相应的构造方法及getset方法,以方便在构造链表是使用。在这里要注意的就是要给出两个构造方法,一个有参,一个无参。

接下来就是构造链表。构造链表有两种方法,头插法和尾插法,在这里讲讲头插法。头插法就是往已有链表的头结点的前面插入节点。在代码实现的过程中,要先取出头结点root的直接后继节点,并将新插入的节点设为root的直接后继节点,将原root的直接后继点设为新插入节点的直接后继节点。

在链表构造完成之后,就可以定义一些在链表上操作的方法:删除一个给定序号的节点,获取给定序号节点的数据域。在这两个方法中都要注意的是要检验给定序号的合法性。还要注意的是在删除节点时,要做到删除完整,即要将删除节点的引用域清零。另外还可定义一些其他方法。

 

 

0 0