尾结点是指链表中最后一个节点,即存储最后一个元素的节点,与之对应的是头结点,在链表的第一个结点之前附设一个结点。在单链表中,尾结点的指针一般为空,即没有保存其他节点的存储位置信息。但在双向链表中,尾结点一般指向链表中第一个节点。
数据结构中,尾结点是指链表中最后一个节点,即存储最后一个元素的节点,与之对应的是头结点,在链表的第一个结点之前附设一个结点。在单链表中,尾结点的指针一般为空,即没有保存其他节点的存储位置信息。但在双向链表中,尾结点一般指向链表中第一个节点。
简介
尾结点是链表中的最后一个节点,一般尾结点的指针的指向为空。当单链表的插入方式为尾插法时,尾结点的指针指向不为空,即尾结点变为中第一个节点,链表中有个尾指针指向尾结点。
线性表
线性表是数据结构中的重要组成部分。也是程序设计中应用最广泛的一种数据结构,它的主要特点是在线性序列中的每一个结点只有 1 个前驱,也只有 1 个后继。线性表的存储方式有顺序存储方式和链式存储方式。用顺序存储方式实现线性表的存储,使得逻辑上连续的元素在物理存储上也是连续的,同时对线性表中的数据可以实现随机存取,而链式存储主要是对线性表中的相邻元素以相邻或不相邻的存储单元来保存。所以在链式存储结构中,每个结点除了保存元素信息以外,都至少还需 1 个指针来保存后继结点的地址。也就是说,1 个结点由 1 个数据域和 1 个指针域组成。链式存储结构表示线性表中的数据元素时,要先通过 1 个算法来创建 1 个链表,称为线性链表。1 个结点中只含有 1 个指针域的线性链表称为单链表或单向链表。而含有 2 个指针域的链表称为双向链表或双链表,双链表的每个结点中 1 个指针指向前驱结点,另一个指针指向后继结点。
由后往前的逆序创建法
在这种链表的创建方式中,首先也要掌握单向链表的特点,然后,根据单向链表的特点,从尾结点开始,逐个结点地向首结点方向链接,即每次生成的新结点,都将链接在已经存在的链表的首部,变成新的首结点。而尾结点是第一个创建的结点。因此,首先就要考虑第一个结点的指针要指向空(即尾结点的指针指向空)。整个链表的创建步骤如下:
创建第 1 个结点 A1。第 1 个被创建的结点为整个链表的尾结点。根据单向链表的特点,它的指针应指向空。同时,链表中只有 1 个结点,因此这个结点也是已经生成链表的首结点。并用一个专门的指针指(在此用 h)向这个临时的首结点。
创建第 2 个结点 A2,并用这个新创建的结点指向已经生成链表的临时首结点。这个新创建的结点 A2 就成为了已经生成链表的新的临时首结点。所以首结点指针 h 要指向这个新临时首结点。
重复第二步的工作,直到所有的结点都生成。
双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。