536
社区成员




4 10
SSSXXSXXSX
SSSXXSXXS
SSSSSSSSSSXSSXXXXXXXXXXX
SSSXXSXXX
代码如下
#include<stdio.h>
#include <malloc.h>
#include<stdbool.h>
typedef int Position;
typedef struct SNode *PtrToSNode;
typedef int ElementType;
struct SNode {
ElementType *Data; /* 存储元素的数组 */
Position Top; /* 栈顶指针 */
int MaxSize; /* 堆栈最大容量 */
};
typedef PtrToSNode Stack;
Stack CreateStack(int MaxSize);
bool IsFull( Stack S );
bool IsEmpty( Stack S );
ElementType Pop( Stack S );
Stack CreateStack(int MaxSize)
{
Stack S=(Stack)malloc(sizeof(struct SNode));
S->Data=(ElementType*)malloc(MaxSize*sizeof(ElementType));
S->Top=-1;
S->MaxSize=MaxSize;
return S;
}
bool IsFull( Stack S )
{
return (S->Top == S->MaxSize-1);
}
bool Push( Stack S, ElementType X )
{
if ( IsFull(S) )
{
return -1;
}
else
{
S->Data[++(S->Top)] = X;//top先+1,再放值
}
}
bool IsEmpty( Stack S )
{
return (S->Top == -1);
}
ElementType Pop( Stack S )
{
if ( IsEmpty(S) )
{
return -1;
}
else
return ( S->Data[(S->Top)--] );
}
int main()
{
int N,M;
scanf("%d %d",&N,&M);
Stack S;
int i,j;
char a[100];
while(N--)
{
for(i=0;i<100;i++)
{
scanf("%s",&a[i]);
}
}
while(N--)
{
S=CreateStack(M);
}
for(i=0;i<N;i++)
{
if(a[i]='S')
{
if(!IsFull(S ))
{
Push(S,1);
}
else if(IsFull(S ))
{
printf("NO");
}
}
else if(a[i]='X')
{
if(!IsEmpty(S ))
{
Pop(S );
}
else if(IsEmpty(S ))
{
printf("NO");
}
}
}
if(IsEmpty(S ))
{
printf("YES");
}
return 0;
}