栈和队列的共同特点是什么?(A)
A只允许在端点处插入和删除元素
B都是先进后出
C都是先进先出
D没有共同点
解析:
队列在一端插入,另一端删除
栈也是在一端进行操操作
栈是容器的一种
栈无遍历,无迭代
#include <iostream>
//引入栈的头文件
#include <stack>
using namespace std;
//定义结构体
struct a
{
int a;
stack<int> b;
}demo;
int main()
{
//定义一个存int类型变量的栈,名称为stk
stack<int> stk;
//使用stack的empty函数
if (stk.empty())
{
cout << "this stack is kong\n";
}
//英语不重要
cout << "Now is start the for and push num into stack.\n";
//把i入栈
for(int i = 0; i < 5; i++)
{
demo.a = i;
demo.b.push(demo.a);
}
cout << "push is over.\n";
cout << "元素是:" ;
//从栈顶出栈同事删除栈顶元素
while(demo.b.top())
{
cout << demo.b.top();
demo.b.pop();
}
return 0;
}
队列,从队尾插入,输出时从队首输出,先入先出
#include <iostream>
#include <queue>
using namespace std;
int main()
{
cout << "start the code.\n";
queue<int> qu;
if(qu.empty())
{
cout << "queue is a kong.\n";
}
//向队列里加入数据
for(int i = 0;i < 5; i++)
{
qu.push(i);
}
//数据是从后面加,输出是从前面出,所以是先进先出
cout << "队首元素:" << qu.front();
cout << "\n队尾元素:" << qu.back();
cout << "\n总共:" << qu.size() << endl;
while(!qu.empty())
{
cout << qu.front() << " ";
qu.pop();
}
cout << "\n=================\n";
if(qu.empty())
{
cout << "queue is a kong.\n";
}
cout << "\n";
cout << "================\n";
//使用pop清空之后,队首和队尾的数据还是未改变,奇怪
cout << "队首元素:" << qu.front();
cout << "\n队尾元素:" << qu.back();
cout << "\n总共:" << qu.size() << endl;
return 0;
}