2线性结构——数据结构基础篇
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2线性结构——数据结构基础篇相关的知识,希望对你有一定的参考价值。
线性结构
线性结构的4大特点:
1、有一个结点只有前驱
2、有一个结点只有后继
3、其他结点既有一个前驱也有一个后继
4、在逻辑上相邻在物理上也相邻数据的逻辑关系叫做线性结构
线性结构的3大类型:
1、线性表——线性表是n个数据元素的有限序列
存储结构:
顺序存储对应一组操作:顺序表
链式存储对应一组操作:单向链表、双向链表、循环链表
2、栈——限定只在表的一端(表尾)进行插入和删除操作的线性表;允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),其这一端被固定了。
存储结构:
顺序存储对应一组操作:顺序栈
链式存储对应一组操作:链栈
特性:
后进先出
3、队列——限定在表的一端(队头front)进行删除,在表的另一端(队尾rear)进行插入操作的线性表
存储结构:
顺序存储对应一组操作:顺序队列、循环队列
链式存储对应一组操作:链队列
特性:
先进先出
存储结构下面的具体操作:
1、线性表:
顺序表——顺序存储对应的操作,且空间连续
具体操作:
定义顺序表、建表、查询、增加、删除、修改、输出
链表——链式存储对应一组操作,且空间不必连续
具体操作:
定义链表
进行以下的操作必须已经存在一个链表
创建链表、查询(序号、数据)、插入、删除、逆序、合并、输出
图例过程(考点):
链表插入:
链表删除:
链表逆序:
2、栈:
栈的计算(考点):
1、进栈出栈顺序问题
给出一定元素的进栈顺序,求这些元素不可能出栈的顺序情况。
2、求栈至少多少的容量问题
给出一定元素的进栈顺序和出栈顺序,求至少需要多大的容量可以进行此操作。
3、求栈中元素
给出栈中bottom的位置和top的位置,求栈中的元素
如果bottom = 0,则元素个数为|top-bottom|。
注意:如果top中也存放元素,则元素个数为|top-bottom+1|
注意:在栈中bottom一端是被固定的。
4、栈中指针的位置
栈空时指针的具体位置:
top == 0,让元素进入当前的栈,然后是再移动top指针;这时,top指针一直在现存元素栈顶的上一个位置。
top == -1,先移动top指针,然后让元素进入当前的栈;这时,top指针永远指向当前元素的位置。
各情况的指针的具体位置:
注意此时定义的栈空的情形:
top == 0
出栈:
top -- ,读取元素
满栈:
top = 栈容量-1
进栈:
进入元素,top++
栈的基本操作:【两种存储结构都适用】
1、栈的初始化
2、进栈
3、出栈
4、判断栈空
5、判断栈满
6、读取栈顶元素
3、队列:
链队列——链式存储对应一组操作,且空间不必连续
两个指针:
队头指针Q.front指向头结点
队尾指针Q.rear指向尾结点
初始态:
队空条件:
头指针和尾指针均指向头结点
Q.front = Q.rear
循环队列——顺序存储对应的操作,且空间连续
两个指针:
Q.front指向队列头元素
Q.rear指向队列尾元素的下一个位置
具体情况的相关判断:
初始态:
Q.front = Q.rear = 0
队空条件:
Q.front == Q.rear
队满条件:
(Q.rear + 1)% MAX == Q.front
入队情况:
Q.rear = (Q.rear + 1)% MAX
出队情况:
Q.front = (Q.front + 1)% MAX
求队列中实际元素的个数:
(Q.rear - Q.front + MAX )% MAX
队列的基本操作:【两种存储结构都适用】
1、队列的初始化
2、销毁队列
3、进队
4、出队
5、判断队空
6、取队头元素
以上是关于2线性结构——数据结构基础篇的主要内容,如果未能解决你的问题,请参考以下文章
基础篇3 # 数组:为什么很多编程语言中数组都从0开始编号?