数据结构之栈和队列

栈和队列其实本质上是两个线性表;

一、栈

1.基本概念

概念:仅在表尾进行插入或者删除操作的线性表
栈顶:表尾端为栈顶 top
栈底:表头端为栈底 base
特点:后进后出
base==top;说明栈是空的
![在这里插入图片描述](https://img-blog.csdnimg.cn/fa93b1acc8854dd8891118456ea1882a.png

2.栈的顺序储存结构:顺序栈(用数组实现顺序栈)

(1)入栈:

  • 先判断是否栈满
  • 然后栈顶指针++;
  • 将新元素赋值给栈顶空间
    (2)出栈
  • 先判断栈是否为空
  • 将要删除的栈顶元素返回
  • 栈顶指针–;
2. 栈的链式存储结构:链栈

栈的链式存储结构称为链栈。链栈的结点类型与链式线性表的结点类型定义相同,不同的是它是仅在表头操作的单链表。链栈通常用不带头结点的单链表来实现,栈顶指针就是链表的头指针,栈顶就是单链表的头部。

二、队列

特点:先进先出的线性表

1. 循环队列

目的:不浪费空间
队头:f
队尾:r

  • f==r 说明队列是空的
  • 队满的时候:总是有一个空格, f f f== ( r + 1 ) (r+1) (r+1)%n,n是元素个数
    在这里插入图片描述

三、C++的实现

1.栈

定义:stack<int> s;
(1)入栈:s.push(int x)
(2)出栈:s.pop()
(3)返回栈顶元素并删除:s.top()
(4)返回栈顶元素:s.peek()
(5)返回栈的大小:s.size()
(6)判断栈是否为空:s.empty()//如果为空就返回true

2.队列

定义:queue<int> q;
(1)入队:q.push()
(2)出队: q.pop()
(3)返回队头元素: q.front()
(4)返回队尾元素:q.back()
(5)返回队列大小: q.size()
(6)判断队是否为空 :q.empty()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值