ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

栈和队列

2022-05-24 19:04:33  阅读:137  来源: 互联网

标签:sta 队列 元素 栈顶 STL que


栈和队列

栈 -stack

首先看看百度的解释:

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈入栈压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

由上述可以简述栈的特性:先进后出,后进先出,即限定仅在表尾进行插入和删除操作的线性表;栈有三种操作:入栈、出栈和询问栈顶元素。

举个例子,如果1,2,3,4,5按顺序入栈,根据栈的特性,最终栈顶元素为5,那如果删除栈顶元素5,则栈顶元素变为4,再加入6,栈顶元素又会变为6了。

队列 -queue

如果理解了栈,那么队列也更好理解了。

队列的特性为先进先出,其余与栈相似。

代码

C++中的STL实现了栈和队列这两种数据结构,直接用即可。(STL如果不知道可自行百度,这里不细讲。)

首先需要引入STL中栈和队列的头文件

#include<stack> // STL 中栈的头文件
#include<queue> // STL 中队列的头文件

创建栈和队列的对象

stack<int>sta;  //创建一个栈的对象 stack<数据类型>名称
queue<int>que;  //同理

相关操作

STL将这些操作封装成为函数了。

//sta
sta.push(x);    //将元素x入栈
sta.pop();      //弹出栈顶
sta.top();      //询问栈顶元素
sta.size();     //询问栈中元素个数
sta.empty()     //判断栈是否为空
//que
que.push(x);    //将元素x压入队列
que.pop();      //弹出队首元素
que.front();    //询问队首元素
que.back();     //询问队尾元素
que.size();     //询问队列元素个数
que.empty()     //判断队列是否为空

完整代码

#include<cstdio>
#include<stack> // STL 中栈的头文件
#include<queue> // STL 中队列的头文件
using namespace std;    //使用名称空间std的函数

int main(void){
    stack<int>sta;  
    queue<int>que;
    
    for(int i = 1; i <= 5; ++i){
        sta.push(i);
        que.push(i);
    }
    while(!sta.empty()){
        printf("%d ", sta.top());
        sta.pop();
    }
    putchar('\n');
    while(!que.empty()){
        printf("%d ", que.front());
        que.pop();
    }
    return 0;
}

栈输出:5 4 3 2 1

队列输出:1 2 3 4 5

标签:sta,队列,元素,栈顶,STL,que
来源: https://www.cnblogs.com/yanyeting/p/16306696.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有