线性表

Posted lqkstudy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表相关的知识,希望对你有一定的参考价值。

顺序表

  顺序表是采用顺序结构存储的线性表。顺序表是将所有元素放到一块连续的存储空间中,特点是存取速度快,但是不可以动态增加长度。

链表

  链表是采用链式结构存储的线性表。链表中的元素在存储空间中的位置不一定是连续的,所以链表使用结点来存储元素,每个节点中还存储了相邻节点位置信息。由于不是连续存储,存取元素的速度比顺序表差。但是只要存储空间足够,链表就可以动态增加长度,也就是说,相较于顺序表,链表能更快速地进行元素的插入和删除操作。

  链表需要一个头指针head来表示链表的第一个结点。根据结点中存储的相邻结点信息的不同,链表又可以细分为单向链表和双向链表。若链表的第一个结点和最后一个结点相连,则该链表又可以称为循环链表。

单向链表

  单向链表的结点中只保存了直接后继结点的位置信息。也就是说,结点中有一个next指针指向该结点的直接后继结点,若该结点是最后一个结点,则next取null。

  技术图片

  单向链表的结点结构定义如下:

技术图片
 1 public class LNode<E> 
 2 
 3     public E data;
 4 
 5     public LNode<E> next;
 6 
 7     public LNode(E data) 
 8         this.data = data;
 9     
10 
11 
LNode

  单向链表的插入分为三种情况:

  在前面插入:插入结点的next指针指向第一个结点,head指针指向插入结点。

  技术图片

  在后面插入:最后一个结点的next指针指向插入结点。

  技术图片

  在中间插入:指定位置的前一个结点的next指针指向插入结点,插入结点的next指针指向指定位置的结点。

  技术图片

  单向链表的删除也分为三种情况:

  删除第一个结点:head指针指向下一个结点。

  技术图片

  删除最后一个结点:倒数第二个结点的next指针置为null。

  技术图片

  删除中间的结点:指定结点的前一个结点的next指针指向指定结点下一个结点。

  技术图片

单向循环链表

  单向循环链表是第一个结点和最后一个结点相连的单向链表。单向循环链表最后一个结点的next指针指向第一个结点。

  技术图片

  单向循环链表的

 

以上是关于线性表的主要内容,如果未能解决你的问题,请参考以下文章

线性表—顺序表

线性表的概念与实现

线性表

数据结构-线性表

数据结构-线性表

线性表