当前位置:首页 > C++目录 > 正文内容

【数据结构】栈的基本操作

亿万年的星光5年前 (2021-02-19)C++目录2969

0.前言

上一篇中简单介绍了栈的定义,这一篇中介绍栈的基本用法,包含压栈,出栈,判断栈空,判断栈中元素个数等。下面进行详细介绍


1.基本用法

本文介绍的栈的主要操作,使用栈之前加入<stack>头文件。基本用法如下:

s.push(item);       //将item压入栈顶  
s.pop();            //删除栈顶的元素,但不会返回  
s.top();            //返回栈顶的元素,但不会删除  
s.size();           //返回栈中元素的个数  
s.empty();          //检查栈是否为空,如果为空返回true,否则返回false


2.定义栈

格式:stack<数据类型>栈名

例如:

#include<iostream>
#include<stack>
using namespace std;
int main(){
	stack<int> s; //定义一个栈,名字是s 
	return 0;
}


3.入栈

#include<iostream>
#include<stack>
using namespace std;
int main(){
	stack<int> s; //定义一个栈,名字是s 
	//方式1:读取50个数入栈 
	for(int i=0;i<50;i++){
        s.push(i);
    }
    
    //方式2:只要是数字就入栈,不限定长度 
	while(cin>>num)  
    {  
        s.push(num);  
    }  
    
	return 0;
}

4.测量栈的大小

跟以前学过的string的用法类似,可以用size来测量

#include<iostream>
#include<stack>
using namespace std;
int main(){
	stack<int> s; //定义一个栈,名字是s 
	int num;
    //方式2:只要是数字就入栈,不限定长度 
	while(cin>>num)  
    {  
        s.push(num);  
    }  
    cout<<"栈的长度是:"<<s.size()<<endl; 
	return 0;
}


5.出栈、判断为空、栈定元素


#include<iostream>
#include<stack>
using namespace std;
int main(){
	stack<int> s; //定义一个栈,名字是s 
	int num;
    //方式2:只要是数字就入栈,不限定长度 
	while(cin>>num)  
    {  
        s.push(num);  
    }  
    cout<<"栈的长度是:"<<s.size()<<endl; 
     while(!s.empty())   //判断栈是否为空 
    {  
        cout<<s.top()<<" ";  //输出栈定元素 
        s.pop();   //出栈一个元素 
    }  
    cout<<"\n 当前栈的长度是:"<<s.size()<<endl; 
	return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【题解】小X玩游戏

    【题目描述】小X喜欢玩游戏。  这天,小X觉得传统的游戏都玩腻了,自己随手在草稿纸上画了一行N个格子作为棋盘, 制定了如下规则:格子从左到右依次编号为1到N,玩家初始位于格子1,初...

    树的存储与遍历—顺序存储

    顺序存储使用数组来存储二叉树节点,通过数组下标表示节点间的父子关系,一般适用于完全二叉树。1.存储规则根节点存储在索引 0 位置对于索引为 i 的节点:左子节点索引:2*i + 1右子节点索引:2*i...

    CSP复赛必备,时间与空间估算

    CSP复赛必备,时间与空间估算

    一、时间估算       在竞赛环境中,一般运行程序的时间是1s。这要求我们尽量不要循环太多次数,一般情况下,建议将时间复杂度控制在10^8以内。 ...

    指针(一):基础用法

    1.定义什么是指针,简单来说:“指针就是地址”。2.指针变量的定义指针变量定义形式:  类型说明符  *变量名其中,*号表示指针变量。变量名即为定义的指针变量名,类型说明符表示该指...

    【数据结构】栈—表达式括号匹配

    【数据结构】栈—表达式括号匹配

    【题目描述】假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则...

    STL入门——容器1:vector (不定长度数组)

    一、定义     vector是一个不定长度数组。不仅如此,它把一些常用操作“封装”在了 vector 类型内部。    ...