【数据结构】栈与队列 Part1:栈的创建与相关函数

First.栈(Stack)

定义:后进先出的线性表

操作:

#include<stack> 头文件

stack<int> s;      创建int类型的栈s

s.push(x);           将x放入栈中

s.top();               读取栈顶元素

s.pop();              释放栈顶

s.size();              返回栈中元素数目

s.empty();          若栈为空则返回真,反之则返回假

示范代码:

 1 #include<iostream>
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 #include<map>
 6 #include<stack>
 7 #include<queue>
 8
 9 using namespace std;
10
11 int main()
12 {
13     stack<int> s1;
14     int x=3;
15     s1.push(x);
16     cout<<"x="<<s1.top()<<endl;
17     int y;
18     y=s1.top();
19     cout<<"y="<<y<<endl;
20     cout<<"size: "<<s1.size()<<endl;
21     cout<<"empty? "<<s1.empty()<<endl;
22     s1.pop();
23     cout<<"size: "<<s1.size()<<endl;
24     cout<<"empty? "<<s1.empty()<<endl;
25     return 0;
26 }

原文地址:https://www.cnblogs.com/Ze-Black/p/10048719.html

时间: 2024-11-09 06:13:37

【数据结构】栈与队列 Part1:栈的创建与相关函数的相关文章

数据结构(7)----栈与队列之栈的应用四则运算表达式求值

栈与队列之栈的应用四则运算表达式求值 栈在四则运算表达式求值的应用为逆波兰表达式(后缀表达式) 普通算式(中缀表达式):9 + (3 - 1) * 3 + 10 / 2     ---(1) 逆波兰表达式(后缀表达式):9 3 1 - 3 * + 10 2 /         ---(2) 1:逆波兰表达式的计算规则 从左到右遍历表达式的每个数字和符号,遇到数字就进栈,遇到符号,就将处于栈顶的两个数字出栈,进行运算,再把运算结果进栈,一直到最终获得结果.接下来我们以(2)式为例:

【栈和队列】栈和队列的基本应用(C++版)

栈和队列的应用非常之广,只要问题满足后进先出和先进先出原则,均可使用栈和队列作为其数据结构. (注意:在下面的代码中,我直接使用C++标准库提供的模板stack和queue,如果您用C语言,则要用前面介绍的方法自己实现stack和queue) 栈的应用 数制转换: 将一个非负的十进制整数N转换为另一个等价的基为B的B进制数的问题,很容易通过"除B取余法"来解决. [例]将十进制数13转化为二进制数. 解答:按除2取余法,得到的余数依次是1.0.1.1,则十进制数转化为二进制数为1101

《大话数据结构》笔记(4-1)--栈与队列:栈

栈的Java实现代码: https://github.com/Lyu0709/data-structure/blob/master/src/com/coding/basic/stack/Stack.java 逆波兰算法实现: https://github.com/Lyu0709/data-structure/blob/master/src/com/coding/basic/stack/RPN.java 第四章  栈与队列 栈 定义 我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(b

算法系列(六)数据结构之表队列和栈

在http://blog.csdn.net/robertcpp/article/details/51559333一文中,我们讲了排序,这一章来介绍一下基本数据结构:表.队列.栈和它们的简单实现 一.表ADT 1.数组实现顺序表 通过对数组操作,来直接对表进行增删查改操作,这种线性表查找某个位置的元素花费的时间为O(1),但是插入删除元素花费的时间为O(n),如果对表的操作更多的是访问操作,那么选择这种实现更为合适. 下面是一个简单实现 package com.algorithm.list; im

数据结构复习--栈和队列(1)--栈

1.栈和队列简介: 栈和队列是非常重要的两种数据结构,在软件设计中应用很多.栈和队列也是线性结构,线性表,栈和队列这三种数据元素和数据元素间的逻辑完全相同.差别是线性表的操作不受限制,而栈和队列的操作收到限制,栈的操作只能在表的一端进行,队列的插入操作在表的一端进行而其它操作在表的另一端进行,所以把栈和队列称为操作受限的线性表 栈: 栈(Stack)是操作限定在表的尾端进行的线性表.表尾由于要进行插入,删除等操作,所以,它具有特殊含义,把表尾成为栈顶(Top),另一端是固定的,叫栈底(Botto

数据结构(08)_队列和栈的相互实现

1. 栈的队列的相互实现 思考:栈和队列在实现上非常相似,能否用相互实现? 1.1. StackToQueue 用栈实现队列等价于用"后进先出"的特性实现"先进先出"的特性.实现思路: 准备两个栈用于实现队列:stack_in和stack_out 入队列:当有新元素入队时,将其压入队列stack_in 出队列:当需要出队时:1.stack_out.size() == 0,将stack_in中的数据逐一弹出并压人stack_out(数据移动)2.stack_out.s

LeetCode225 栈&#183;用队列实现栈(C++)

题目描述: 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空 注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的. 你所使用的语言也许不支持队列. 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可. 你可以假设所有操作都

3.1_栈和队列_栈

[栈的定义] 栈(stack)是限定仅在表尾进行插入和删除操作的线性表. 栈又称为后进先出(Last In First Out)线性表,简称LIFO结构. (PS:定义中的表尾是指 栈顶!) [几个关键词 ] [ 栈顶(top) ] 允许插入和删除的一端称为 栈顶. [ 栈底(bottom) ] 栈顶的另一端称为 栈底. [ 空栈 ] 不含任何数据元素的栈. [栈的插入操作——进栈(push)] 栈的插入操作,叫做进栈,也称为压栈.入栈. [栈的删除操作——出栈(pop)] 栈的删除操作,叫做出

算法习题---栈与队列之栈的数学性质

一:栈的数学性质 当n个编号元素以某种顺序进栈,并且可以在任意时刻出栈,所获得的编号元素排列的数目N恰好满足Catalan函数的计算,即 二:题目一: 试着将1,2,3,4,5,6,六个数字入栈,则出栈方式有几种?使用数学性质可以知道有132种 三:其他题目:判断栈给定的操作序列的合法性 I入栈O出栈,例如ABC入栈,出栈为CBA,那么给定序列为IIIOOO,表示3个先入栈,然后出栈 现在给定一个序列(只含IO)要求判断其是否合法 四:性质 1.IO个数一致 2.开始到中间任一位置I的数目大于O