线性表、栈、队列、串、树、图

1、线性表

线性表是由n个数据元素组成的有限序列。n定义为线性表的长度,n=0时,称为空表。

线性表的存储结构分为顺序表和链表。

顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。

链表也是一种线性表,但是它不会按线性的顺序存储数据,而是在每一个节点里存着到下一个节点的指针。由于不必按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比顺序表快得多,但是在查找一个节点或者访问特定编号的节点时需要O(n)的复杂度,而顺序表相应的时间复杂度分别是O(logn)和O(1)。

链表又分为单链表、循环链表、双向链表。

在顺序结构中,每个元素只需要存元素数据就可以了,但是在链式结构中,除了要存储元素数据外,还要存储它的后继元素的存储地址。存储元素数据的域称为数据域,存储后继元素位置的域称为指针域,数据域和指针域组成了节点。链表中第一个节点的存储位置叫做头指针。

在单链表的第一个节点前附设一个节点,称之为头节点。头结点的数据域可以不存储任何信息,也可以存储如线性表的长度等附加信息。头结点的指针域存储指向第一个节点的指针。

链表向外暴露的只有第一个数据节点,我们对链表的所有操作,都是直接或间接地对这个节点进行的。

在有些算法题目中,习惯把第一个数据节点称为头节点,把头结点之前的节点称为哑节点dummy。

2、栈、队列

栈是一个只能在一端插入和删除的特殊的线性表。

队列

 

3、串、树、图

 

4、堆

堆是优先级队列,堆是完全二叉树。

 

posted on 2019-11-05 16:18  koushr  阅读(306)  评论(0编辑  收藏  举报

导航