C++二级-栈与队列

C++二级-栈与队列

1.1栈的基本概念

:只允许在一端进行插入或删除操作的线性表。栈是一种线性表,但是限定这种线性表只能在一端进行插入和删除操作。
栈顶:线性表允许进行插入和删除的那一段。
栈底:固定的,不允许进行插入和删除的另一端。
空栈:不包含任何元素的空表。
在这里插入图片描述

1.2栈的基本操作

栈的基本操作包括入栈和出栈,在进行入栈和出栈操作时,应注意栈是“先进后出”或“后进后出”的线性表。
(1)入栈:向一个栈插入新元素称作入栈。
(2)出栈:从一个栈删除元素称作出栈。

1.3栈的存储结构

栈的存储结构可以分为顺序存储和链式存储。顺序存储的栈称为顺序栈,链式存储的栈称为链栈。

1.3.1顺序栈

顺序栈:利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针(top)指示当前栈顶位置。
空栈条件:顺序栈的数组下标如果从0开始,栈空的条件是top=-1。
栈满条件:顺序栈的数组下标如果从0开始,栈满的条件是top=maxsize-1。
计算方法:如果bottom>=1,栈内的元素个数为|top-bottom|+1,如果bottom=top=0,则表示空栈。(top表示栈顶指针,bottom表示栈底指针)
上溢:若顺序栈满栈时,再进行入栈操作,就会产生上溢。
下溢:若顺序栈空栈时,再进行出栈操作,就会产生下溢。

1.3.2链栈

链栈:采用链式存储的栈称为链栈。
优点:便于多个栈共享存储空间和提高其效率,并且链栈不存在栈满上溢的情况。

2.1队列的基本概念

队列:队列是一种特殊的线性表,只允许在表的一端进行插入,在表的另一端进行删除。
队头:队列中指定了用来删除数据的一端,用头指针(front)指向队头元素的前一个位置。
队尾:队列中指定了用来插入数据的一端,用尾指针(rear)指向队尾元素。
空队列:队列中没有元素时,称为空队列。
在这里插入图片描述

2.2队列的基本操作

队列的基本操作包括入队和出队,在进行入队和出队操作时,应注意队列是“先进先出”的线性表。
(1)入队:在队尾插入一个新元素。
(2)出队:在队头退出一个元素。

2.3队列的存储结构

队列的存储结构可以分为顺序存储和链式存储。队列的顺序存储结构一般采用循环队列的形式,队列的链式存储称为链式队列。

2.3.1循环队列

循环队列:将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,即把存储队列元素的表从逻辑上看成一个环,称为循环队列。
在这里插入图片描述
运算:元素个数=元素个数(尾指针)-front(头指针)

  • (a)rear-front为正数时,便是循环队列的元素个数
  • (b)rear-front为负数时,需要加上循环队列的容量
  • (c)rear-front为零时,队列可能队满或者队空
    在这里插入图片描述

2.3.2链式队列

链式队列:队列的链式存储称为链式队列,它实际上是一个同时带有队头指针和队尾指针的单链表。头指针指向队头的结点,尾指针指向队尾结点,即单链表的最后一个结点。
在这里插入图片描述
队空条件:front=NULL && rear=NULL(当front=rear时,可能是同时指向尾结点也可能是同时指向空)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值