刷题(2)-栈,队列(1)总结

基础

0.1 栈


栈的特点

栈(Stack)是一种线性存储结构,它具有如下特点:

  1. 栈中的数据元素遵守”先进后出"(First In Last Out)的原则,简称FILO结构。
  2. 限定只能在栈顶进行插入和删除操作。即同一端插入删除

底层实现一般以数组或链表(单向链表、双向链表或循环链表)实现。
tips:数组栈,栈顶为数组尾,链表栈采用头插法(插入在链表头)
性质总览
数组栈、链表栈的实现以及各种详细

c++栈的常规操作以及实现

stack<int> a
size() empty()
pop() 不会返回弹出的元素(一般需要结合top()) push() top()
c++默认是以deque 双端队列实现的。

0.2 队列


队列的特点

队列(queue)与栈一样,是一种线性存储结构,它具有如下特点:

  1. 队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构。
  2. 在队尾添加元素,在队头删除元素。即插入,删除放在两端

队列与栈一样是一种线性结构,因此以常见的线性表如数组、链表作为底层的数据结构。
性质总览
数组队列、链表队列的实现以及各种详细

数组队列

2个int( first last )分别标记队头和最后一个元素的下一个。(初始都为0)
假如不使用循环队列:

  1. 加元素 元素放在数组尾 last++
  2. 删除元素 ++first

假如使用循环队列: 保持数组中有一个位置别被用(为了分清队满和队空的情形)实现方式:

  1. (一个指向第一个元素,一个指向尾后元素) 相同表示空
  2. first==(last+1) %size 表示为满

链队列

以链表头部为队首(方便出队,即删除节点)以链表尾部为队尾(方便入队,即插入节点)
class队列含有两个private Node * 数据成员(first,last) 一个first的next指向链表头,方便删除元素,一个last的next指向链表尾,方便插入元素

c++队列的常规操作以及实现

queue<int> a
size() empty()
pop() 不会返回弹出的元素 push()
front()back()(注意没有top())
c++默认是以deque 双端队列实现的。

c++双端队列的常规操作以及实现

deque<int> a
empty size push_front push_back pop_back pop_front erase(b,e) back front

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值