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

栈,队列

  • 基础
    • 0.1 栈
    • 0.2 队列

基础

0.1 栈

栈的特点

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

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

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

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

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

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

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

你可能感兴趣的:(总结,栈,队列,数组)