大家不妨想一下生活中,当我们往行李箱里放衣服时,是不是先放进去的衣服被压在最下面,最后才能取出来呢,而最后放进去的衣服最先拿出来呢。如果大家这都能理解的话,那恭喜大家,已经领悟到栈的精髓了哈!!具体特点我们接下来开始讲叭~
记得头文件
#include
stack stk;
stack采用模板类实现,stack对象的默认构造形式stack(const stack &stk);
拷贝构造函数stack operator=(const stack &stk);
重载等号操作符push (elem);
向栈顶添加元素pop ();
从栈顶移除第一个元素top ();
返回栈顶元素empty();
判断堆栈是否为空size();
返回栈的大小#include
#include
#include
using namespace std;
void text01() {
//特点:符合先进后出的数据结构
stack<int> s;
s.push(10);
s.push(20);
s.push(30);
s.push(40);
cout << "栈的大小: " << s.size() << endl;
//只要栈不为空,查看栈顶,并执行出栈操作
while (!s.empty()) {
//查看栈顶元素
cout << "栈顶元素为: " << s.top() << endl;
//出栈
s.pop();
cout << "栈的大小: " << s.size() << endl;
}
}
int main() {
text01();
return 0;
}
在已逝的2019-2022的三年,相信大家每天都有对核酸支配的经历。我们不妨回忆一下,我们排队做核酸时,先排队的A是不是最先做完可以走呢。而最后排队的B是不是最后一个做完,最后才能走呐??没错,这就是队列的精髓——先进先出!!!接下来关于队列的故事,我们慢慢讲!
记得头文件
#include
queue que;
queue采用模板类实现,queue对象的默认构造形式queue(const queue &que);
拷贝构造函数queue operator=(const queue &que);
重载等号操作符push (elem);
向队尾添加元素pop ();
从对头移除第一个元素back();
返回最后一个元素front ();
返回第一个元素empty();
判断队列是否为空size();
返回队列的大小#include
#include
#include
using namespace std;
class Player {
public:
Player(string name, int age) {
this->m_name = name;
this->m_age = age;
}
public:
string m_name;
int m_age;
};
//队列queue
void text01() {
//创建队列
queue<Player> q;
//准备数据
Player p1("James", 38);
Player p2("Irving", 30);
Player p3("Durant", 34);
Player p4("Rose", 34);
Player p5("Curry", 34);
//入队
q.push(p1);
q.push(p2);
q.push(p3);
q.push(p4);
q.push(p5);
cout << "出队前队列大小为: " << q.size() << endl;
cout << "------------------------------------------" << endl;
while ( !q.empty() ) {
//只要队列不为空,查看队头和队尾
cout << "队头为: ";
cout << "姓名: " << q.front().m_name << " 年龄为: " << q.front().m_age << endl;
cout << "队尾为: ";
cout << "姓名: " << q.back().m_name << " 年龄为: " << q.back().m_age << endl;
cout << "------------------------------------------" << endl;
//出队
q.pop();
}
cout << "出队后大小为: " << q.size() << endl;
}
int main() {
text01();
return 0;
}
下一期预告:list容器