EOJ 3174 入栈出栈

原创 2017年01月03日 20:30:49
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char stack[1500];//栈数组
int top=0;//栈顶
int push(char x)
{
    if(top>=1025)//栈满,入栈失败
        return 1;
    stack[top++]=x;//否则入栈,先入栈后top加一
    return 0;
}
int pop()
{
    if(top>=2)//出栈,当不是最后一个元素时候打印加空格
        printf("%c ",stack[--top]);
    else if(top==1)//最后一个元素出栈加换行符
        printf("%c\n",stack[--top]);
    return 0;
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        memset(stack,0,sizeof(stack));//初始化栈数组
        top=0;
        getchar();//读入换行符
        int i;
        char x;
        for(i=0;i<n;i++)
        {
            scanf("%c",&x);//每次输入后都读入换行符
            getchar();
            push(x);//入栈
        }
        while(top!=0)
            pop();//非空时,出栈
    }
    return 0;
}
注意输入时输入的是字符,所以要用getchar()读取换行符或者空格以保证入栈的都是输入的字符。

C#.NET窗体入栈出栈

  • 2015年12月13日 17:01
  • 905B
  • 下载

栈、堆内存到底是如何申请的,方法是如何入栈出栈的——内存结构理解学习

Lee出品,转载请注明出处http://blog.csdn.net/hnulwt/article/details/42934365 对于软件开发者而言,理解和熟悉计算机内存知识是很基础的。今天我就来...

入栈出栈遍历栈C语言程序

#include #include #include typedef struct Node { int data; struct Node * pNext; }NODE,* PNODE; t...

判断元素入栈出栈的合法性

给出的入栈序列为(1,2,3,4,5),出栈序列为(4,5,3,2,1)则为合法;出栈序列为(4,5,3,1,2)则为不合法。 解题思路: 1)我们可以用数组来进行存储入栈和出栈的序列,一个数组村...

poj1363 入栈出栈模拟

Rails Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25009...
  • vita_xu
  • vita_xu
  • 2014年09月06日 23:58
  • 505

栈、堆内存到底是如何申请的,方法是如何入栈出栈的——内存结构理解学习

对于软件开发者而言,理解和熟悉计算机内存知识是最为基础的了。今天我就来翻翻旧账,回顾回顾看看我有哪些点遗漏了,在此共同学习。 提起内存,我们常常想到三个区域: 1,静态区,静态变量 static va...
  • hnulwt
  • hnulwt
  • 2015年01月23日 19:42
  • 3199

通过入栈出栈实现数学表达式的计算

#include #include #include #include using namespace std;class Exp { stack ops; // 运算符栈 s...

判断元素入栈出栈的合法性

建立一个辅助栈,把输入的第一个序列中的数字一次压入该辅助栈,并按照第二个序列的顺序从该栈中弹出数字。 遍历出栈顺序中的元素,有两种情况 : (1)如果元素是栈顶的元素,则pop出来; (2)如果不是...

入栈出栈规律·

相信大家都做过类似这样的题目: 已知入栈序列为:1 2 3 4 5,这5个数一次入栈,出栈顺序、时机任意。 则下列可能的出栈序列不正确的是() A 1 2 3 4 5 B 3 2 1 5 4 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EOJ 3174 入栈出栈
举报原因:
原因补充:

(最多只允许输入30个字)