STL:stack(栈)& queue(队列)

STL:stack(栈)& queue(队列)  

基本操作



stack<int>s1;

stack<string>s2;

stack的基本操作有:

1.入栈:如s.push(x);

2.出栈:如 s.pop().注意:出栈操作只是删除栈顶的元素,并不返回该元素。

3.访问栈顶:如s.top();

4.判断栈空:如s.empty().当栈空时返回true。

5.访问栈中的元素个数,如s.size();

例子



// 栈
#include <cstdio>
#include <stack>  // 必备头文件
using namespace std;
int main()
{
  stack <int> ss;
  int n, aa;
  scanf( "%d", &n );
  for( int i=1; i<=n; i++ )
  {
    scanf( "%d", &aa );
    ss.push( aa ); // 进栈
  }
  printf( "栈大小:%d\n",  ss.size() );
  for( ; !ss.empty() ; ) // 判断栈是否为空,空的返回true,
  {
    printf( "%d\n", ss.top()  );  // 一边出栈一边输出栈顶,最终把所有元素输出
    ss.pop();  // 出栈
  }
  return 0;
}


队列

基本操作



queue<int>q1;

queue<double>q2;

queue的基本操作有:

1.入队:如q.push(x):将x元素接到队列的末端;

2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值;

3,访问队首元素:如q.front()

4,访问队尾元素,如q.back();

5,访问队中的元素个数,如q.size();


例子


// 队列
#include <cstdio>
#include <queue>  // 必备头文件
using namespace std;
int main()
{
  queue<int> ss;
  int n, aa;
  scanf("%d", &n);
  for( int i=0; i<n; i++ )
  {
    scanf( "%d", &aa );
    ss.push( aa );  // 进队
  }
  while( ss.size() != 0 )  // 判断队列的大小
  {
    printf("头:%d 尾:%d\n",  ss.front(), ss.back()  );  // ss.front()为队头,ss.back()为队尾
    ss.pop();  // 从队头出队
  }
  return 0;
}  


猜你喜欢

转载自blog.csdn.net/qq_42390424/article/details/81051266