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