stack
stack是一种先进后出的数据结构,只有一个出口。
需要引入头文件 #include <stack>
常用方法
- push():入栈;
- pop():出栈;
- top():返回栈顶元素;
- empty():判断是否为空;
- size():返回元素个数;
代码示例
void testStack01() {
stack<int> s;
//入栈
s.push(10);
s.push(20);
s.push(30);
s.push(40);
cout << "栈大小" << s.size() << endl; //4
//只要栈不为空查看栈顶 并出栈
while (!s.empty()) {
//40 30 20 10
cout << "栈顶元素" << s.top() << endl;
//出栈
s.pop();
}
cout << "栈大小" << s.size() << endl;//0
}
queue
queue是先进先出的数据结构,有两个出口。
需要引入头文件 #include <queue>
常用方法
- back():返回最后一个元素;
- front():返回第一个元素;
- push():入队;
- pop():出队;
- empty():判断是否为空;
- size():返回元素个数;
代码示例
class Person {
public:
Person(string name, int age) {
this->name = name;
this->age = age;
}
string name;
int age;
};
void testQueue() {
//创建队列
queue<Person> q;
Person p1("毛不易",30);
Person p2("汪苏泷", 31);
Person p3("李雪琴", 33);
Person p4("孟鹤堂", 35);
//入队
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
cout << "队列大小" << q.size() << endl;
while (!q.empty()) {
//查看队头
cout << "队头--姓名" << q.front().name << "年龄:" << q.front().age << endl;
//查看队尾
cout << "队尾--姓名" << q.back().name << "年龄:" << q.back().age << endl;
//出队
q.pop();
}
cout << "队列大小" << q.size()<<endl;
/**
* 队列大小4
队头--姓名毛不易年龄:30
队尾--姓名孟鹤堂年龄:35
队头--姓名汪苏泷年龄:31
队尾--姓名孟鹤堂年龄:35
队头--姓名李雪琴年龄:33
队尾--姓名孟鹤堂年龄:35
队头--姓名孟鹤堂年龄:35
队尾--姓名孟鹤堂年龄:35
队列大小0
*/
}