数据结构--线性表、栈、队列

一、线性表

顺序表示与链式表示的区别

1.顺序表示用数组来存储数据元素,其优点是能够随机访问,访问速度较快(改查操作方便);但因为存在数组中,所以增加元素时比较困难,需要重新申请更大的空间,并将原来的数据存入新空间,所以增加操作较慢;同时删除元素时要将删除元素后的元素向前挪一个位置,有着大量的操作(增删操作不方便)。

2.链式表示用链将每个元素链接在一起,其优点是增删操作很方便,但访问元素需要一个个访问,无法随机访问(改查操作不方便)。

单链表、双链表、循环链表、静态链表

1.单链表:链表节点除存放元素自身的信息外还要存放指向后继的指针。

2.双链表:链表节点存放包括自身信息,还有指向前驱和后继的两个指针。

  1. 循环链表:分为循环单链表和循环双链表,是在单链表和双链表的基础上,将最后一个元素的后继指向第一个元素,(第一个元素的前驱指向最后一个元素)构成一个环。

4.静态链表:用一个数组来表示链式结构,每个节点也有数据域和指针域,但是指针域存的是相对地址(游标)。

二、栈

定义:是一种操作受限的线性表,只能在一端进行插入和删除操作。
特点:后进先出(LIFO)
数学特性:卡特兰(Catalan)数------C(n,2n)/(n+1) ====>用来计算n个不同元素进栈,出栈元素是排列个数。

共享栈

两个顺序栈共享一个一维数组空间,两个栈底设置在共享空间两端,栈顶向空间的中间延伸。

链栈

采用链式表示的栈称为链栈。

栈的应用

1.括号匹配
2.表达式求值
3.递归

三、队列

定义:也是一种操作受限的线性表,只允许在表的一段进行插入,而在另一端进行删除。
特点:先进先出(FIFO)

循环队列

1.循环队列需要牺牲一个但愿来区分队空与堆满
2.无论是队首还是队尾进1,都要%maxsize,已达到循环的目的

链式队列

用链式存储来表示队列

双端队列

两端都可以进行插入与删除操作的队列。

输出受限双端队列

两端都能输入,但只有一端能输出

输入受限双端队列

两端都能输出,但只有一端能输入

队列的应用

1.层次遍历
2.打印机输出队列
3.cpu资源调度队列

你可能感兴趣的:(数据结构--线性表、栈、队列)