小弟碰到一道题,虽然得到了题目的输出,但我们学校的判题系统却显示“Wrroy Answer"
希望各位高手指点
问题:
Description 

有一顺序栈,可以存放最大容量为100,经过一系列的进栈和出栈之后,请你输出栈顶元素和栈底元素。

Input 

第一行为操作的次数n,后面n行是具体的操作,每一操作用一字母和元素值来表示,I为进栈,O为出栈,I后面的数据为元素的值。 

Output 

输出经过所给系列操作后的栈顶元素和栈底元素。

Sample Input 


7
I 1
I 2
O
I 5
I 7
O
I 6



我的解法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define STACK_INIT_SIZE 100 

typedef struct {
       int *base, *top;
       unsigned int stacksize;
}SqStack;

int *array;

void InitStack(SqStack *s)
{
 s->top=s->base=NULL;
 s->stacksize=0;
}

int StackEmpty(SqStack *s)
{
    if(s->top==s->base)
        return 1;
    return 0;
}

int Push(SqStack *s, int e)

  if(s->stacksize==STACK_INIT_SIZE)
      return 0;
  if(StackEmpty(s))
  {
      s->base=array;
      *(s->base)=e;
      s->top=(s->base)+1;
      s->stacksize+=1;
      return 1;
  }
  else
  {
      *(s->top)=e;
      s->top+=1;
      s->stacksize+=1;
      return 1;
  }
}

int Pop(SqStack *s)
{
  int e;
  if(StackEmpty(s))
      return 0;
  s->top-=1;
  e=*(s->top);
  s->stacksize-=1;
  return e;
}


int main()
{
    char oper[3];
    int n,i,k;

    SqStack s1,*s;
    s=&s1;
    
     array=(int *)malloc(STACK_INIT_SIZE * sizeof(int));
     if(array==NULL)
         return 0;
    
    scanf("%d",&n);
    for(i=0;i<n;i++)    //n次操作
    {
        scanf("%s",&oper);
        if(strcmp(oper,"I")==0)
        {
            scanf("%d",&k);
            Push(s,k);
        }
        else
        {
            Pop(s);
        }
    }

    if(StackEmpty(s))
    return 0;
    else
    {
        printf("%d\n",*(s->top-1));
        printf("%d\n",*(s->base));
        return 1;
    }

}