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

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM