C++中的stack类、QT中的QStack类

C++中的stack

实现一种先进后出的数据结构,是一个模板类.

头文件 #include<stack>

用法(以int型为例):

stack <int> s;              //定义一个int型栈

s.empty();                        //返回栈是否为空

s.size();                        //返回当前栈中元素的个数  

s.push();                       //在栈顶上堆进一个元素

s.pop();                        //删除掉栈顶上的元素

s.top();                        //返回栈顶的元素,并不会删除  

代码示例:

#include <iostream>
#include <stack>
using namespace std;

int main()
{

       stack<int> s;
       cout<<"stack empty?  "<<s.empty()<<endl;
       for(int i=0;i<5;i++)
       {
              s.push(i);        //入栈
       }

       cout<<"stack empty?  "<<s.empty()<<endl;
       cout<<"stack size:   "<<s.size()<<endl;
       cout<<endl;

       for(int i=0;i<5;i++)
       {
              cout<<"stack top:  "<<s.top()<<endl;
              s.pop();                 //出栈     
       }
       return 0;
} 

QT中的QStack

它的父类是QVector,是个模板类

头文件 #include <QStack>

常用用法(以int型为例):

QStack <int> s;                         //定义一个int型栈

s. isEmpty();                           //返回栈是否为空

s.size();                                //返回当前栈中元素的个数  

s.push();                                //在栈顶上堆进一个元素

s.pop();                                 //删除掉栈顶上的元素,并返回这个元素

s.top();                                //返回栈顶的元素,并不会删除  

T &  operator[] ( int i );            //以数组形式访问队列元素

代码示例:

#include <QtGui>
#include <QStack>
#include <QDebug>
int main(int argc,char * argv[])
{
    QStack <int> s;            //定义一个int型栈
    qDebug()<<"Stack empty:  "<<s.isEmpty();  //返回栈是否为空
    for(int i=0;i<5;i++)
    {
         s.push(i);      //入栈
    }
    qDebug()<<"Stack empty:  "<<s.isEmpty();
    qDebug()<<"Stack size:  "<<s.size();
    for(int i=0;i<5;i++)
    {
     qDebug()<<"Stack top:  "<<s.pop();           //出栈,并查看当前栈顶第一个元素
    }
    qDebug()<<"Stack empty:  "<<s.isEmpty();
    qDebug()<<"Stack size:  "<<s.size();
    return 0;
}

运行:

Stack empty: true

Stack empty: false
Stack size: 5

Stack top: 4
Stack top: 3
Stack top: 2
Stack top: 1
Stack top: 0

Stack empty: true
Stack size: 0

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏项勇

笔记75 | Java字节、十进制、十六进制、字符串之间的相互转换

28430
来自专栏java学习

重要通知!小编出新的Java练习题咯!!

正确答案 3月5号公布 一、选择题和问答题 1、在一个java原文件中,import, class, package语句的顺序是( )。 A. import ...

48550
来自专栏程序员宝库

如何用JavaScript手动实现一个栈

在生活中也能发现很多栈的例子。例如,厨房里堆放的盘子,总是叠在上方的先被使用;输入框内容进行删除时,总是最后输入的先删除;弹夹中的子弹,越后装入的,越先发射.....

12840
来自专栏智能算法

程序员必须了解的数据结构:Array、HashMap 与 List

当开发程序时,我们(通常)需要在内存中存储数据。根据操作数据方式的不同,可能会选择不同的数据结构。有很多常用的数据结构,如:Array、Map、Set、List...

14700
来自专栏武培轩的专栏

剑指Offer-不用加减乘除做加法

package Other; /** * 不用加减乘除做加法 * 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 * 思...

26850
来自专栏java学习

请问你知道什么是栈吗?

1.1栈的概念及记本操作 栈(stack)又称堆栈,是限制在表的一端进行插入和删除的线性表。其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行...

32380
来自专栏个人分享

Scala第一章学习笔记

  面向对象编程是一种自顶向下的程序设计方法。用面向对象方法构造软件时,我们将代码以名词(对象)做切割,每个对象有某种形式的表示服(self/this)、行为(...

11420
来自专栏Android知识点总结

01--图解数据结构之数组实现集合

13740
来自专栏小古哥的博客园

读书笔记-JavaScript面向对象编程(二)

第5章 原型 5.1 原型属性(所有函数拥有一个prototype属性,默认为空对象)   5.1.1 利用原型添加方法和属性 function Gadget(...

44980
来自专栏专注 Java 基础分享

从源码解析LinkedList集合

     上篇文章我们介绍了ArrayList类的基本的使用及其内部的一些方法的实现原理,但是这种集合类型虽然可以随机访问数据,但是如果需要删除中间的元素就...

20650

扫码关注云+社区

领取腾讯云代金券