Pop Sequenece

//堆栈实现
#include <stdio.h>
#include <stdlib.h>

Stack CreateStack();
bool Push(Stack S,int X);
bool IsEmpty(Stack S);
int StackCnt(Stack S);//统计栈里边元素的个数
int Pop(Stack S);
bool judge(int m,int a[]);

//1、输入序列
//2、判断是否满足要求
//3、输出结果

int main()
{
    int m,n,k;
    int i,j;
    int *a;
    int result = 0;
    int flag = 0;
    
    scanf("%d %d %d",&m,&n,&k);
    a = (int*)malloc(N*sizeof(int));
    
    for(i=0;i<k;i++)
    {
        for(j=0;j<N;j++)
        {
            scanf("%d",&a[j]);
        }
        if(judge(m,a)
            printf("YES\n");
        else 
            printf("NO\n");    
    }
}
//1、堆栈满,但栈顶元素小于待输出元素
//2、栈顶元素大于待输出元素

bool judge(int m,int a[],int n)
{
    int maxsize = m,now = 1;
    int j;
    Stack s;
    s = CreateStack();
    for(j=0;j<n;j++)
    {
        while(IsEmpty(s)||a[j]!=now)        //只要栈不空或者栈顶元素不等于将要出栈的元素,就入栈
        {
            Push(s,now);
            now++;
            if(StackCnt(s)>maxsize)
                return false;
        }
        while
        {
            
        }
    }
}

 

posted @ 2020-04-08 16:57  喀秋莎1  阅读(24)  评论(0)    收藏  举报