第二节 c++ 数据结构stack 的用法详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


引言

本节我们一起来学习c++数据结构中的栈(stack),下面是我的学习笔记,供大家参考,如果觉得总结的不错的话,可以收藏起来方便今后复习。

本章概括

章节内容
1.1容器 vector
1.2栈 stack
1.3队列 queue
1.4链表 list
1.5set
1.6map

1.2.1 stack

1.介绍

  • 栈是基本的数据结构之一,特点是“先进后出”。例如乘坐电梯时,先进电梯的最后出来;一盒泡腾片,最先放进盒子的药片位于最底层,最后被拿出来。

还可以定义多维数组:
vector< int > a[MAXN];

2.常见操作

功能例子说明
定义stack< int > q定义一个类型为int的q的栈
元素个数int size = q.size();元素个数
是否为空bool isEmpty = q.empty();判断是否为空
顶部插入q.push(i);在顶部插入i
删除顶部a.pop();删除顶部元素
顶部元素q.top();顶部元素

4.代码讲解

#include<iostream>
#include<stack>
using namespace std;
int main(){
	stack<int>q;
	
	for(int i = 0;i < 7;i++)
	{
		q.push(i);//将0到6压进去
	}
	cout<<q.top()<<endl;//将栈顶输出 
	
	cout<<q.size()<<endl;//输出栈元素的个数
	//7 
	
	while(!q.empty())//当栈不为空的时候执行,直到全部为空 
	{
		q.pop();//将栈顶弹出
	}
	cout<<q.empty()<<endl;//栈为空则为1,栈不为空则为0 
	//1
	
	return 0;
}

1.2.2例题

  • problem:
    伊格那丢喜欢倒过来写。给定伊格那丢写的一行文字,你应该颠倒所有的单词,然后输出它们。

  • input
    输入包含几个测试用例。输入的第一行是一个整数T,也就是测试用例的数量。下面是T个测试用例。
    每个测试用例都包含一个包含几个单词的行。一行最多有1000个字符。

    3
    olleh !dlrow
    m’I morf .udh
    I ekil .mca

  • output
    对于每个测试用例,您应该输出所处理的文本。

    hello world!
    I’m from hdu.
    I like acm.

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	char ch;
	cin>>n;
	getchar();
	while(n--)
	{
		stack<char>a;
		while(1)
		{
			ch = getchar();//一次读一个字符
			if(ch == ' '||ch == '\n'||ch == EOF)
			{
				while(!a.empty())
				{
					putchar(a.top());//输出栈顶
					a.pop();//清除栈顶
				}
				if(ch == '\n'||ch == EOF)break;
				cout<<" ";
			}
			else a.push(ch);//入栈
		}
		cout<<endl;
	}
	
	return 0;
}

下一节我们将对栈queue进行详解,请大家持续关注

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七七七_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值