鸡蛋栈-OJ

来源:互联网 发布:窗体的数据来源可以是 编辑:程序博客网 时间:2024/04/30 09:50

鸡蛋栈

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

    继队列之后,我们又来学习一种新的数据结构——栈。将队列的头部封闭后,就构成了栈这种数据结构,原来队列头部就是栈底,原来队列的尾部就是栈顶。栈与队列的不同就在于栈的底端是封闭的。所以,栈的插入和删除操作只能在栈的一端进行,即栈顶。栈的插入操作称为入栈,删除操作称为出栈。

底________________顶

|

底—————————顶


输入
第一行输入一个数T,表示有T组数据
第二行输入一个数N,表示有N种操作
接下来N行,每行一种操作,push表示将编号为x的鸡蛋放入栈中,pop表示拿走栈顶部的一个鸡蛋。
数据输入保证合法,栈中没有鸡蛋时不考虑出栈操作!
输出
在N种操作完成以后,再将栈中的鸡蛋逐个出栈,按出栈顺序打印鸡蛋上的编号,两个编号之间用空格隔开。如果已没有鸡蛋,则输出"no eggs!"(不包含引号)。
样例输入
13push 3push 2

push 1

个人理解:1.由于没有系统的学习过关于栈的内容,看到题目后就在博客上搜索了一些关于站的内容,也算是提前学习了

                 2.注意代码中第24到27行对栈是否为空的判断.

结果时间内存语言Acceptted121216C

代码:

  1. #include<stdio.h>  
  2. #include<string.h>  
  3. struct stack  
  4. {  
  5.     char s[50];  
  6. }x[20000],tp;  
  7. int main()  
  8. {  
  9.     int i,t,n;
  10.     char y[15];  
  11.     scanf("%d",&t);  
  12.     while(t--)  
  13.     {  
  14.         scanf("%d",&n);  
  15.         int top=0;  
  16.         for(i=0;i<n;++i)  
  17.         {  
  18.             scanf("%s",y);  
  19.             if(y[1]=='u')  
  20.             {  
  21.                 scanf("%s",tp.s);  
  22.                 x[top++]=tp;  
  23.             }  
  24.             else if(top>0)  
  25.             {  
  26.                 --top;  
  27.             }  
  28.         }  
  29.         if(top==0)  
  30.         {  
  31.             printf("no eggs!\n");  
  32.             continue;  
  33.         }  
  34.         for(i=top-1;i>0;--i)  
  35.         {  
  36.             printf("%s ",x[i].s);  
  37.         }  
  38.         printf("%s\n",x[0].s);  
  39.     }  
  40.     return 0;  
  41. }  


原创粉丝点击