02-线性结构4 Pop Sequence(25 分)

题意:1-N按顺序压入栈,中间可以弹出数据。判断给定的序列是否可能是弹出的序列。

思路:建立一个栈,如果读入的数小于栈顶元素(肯定不可能,输出NO),如果读入的数为栈顶元素,则栈顶指针指向下一个数,继续判断,如果读入的数大于栈顶元素,继续压入元素。

如果所有的数都满足要求则输出yes

注意点:栈为空,需要压入一个数。栈溢出,输出也是NO。

#include

int main() 
{
	int N,M,K;
	int i,j,a[1000];
	scanf("%d %d %d",&M,&N,&K);
	for(i=0;istack[top]){  //需要继续压入数据 
				stack[++top]=++num;
			}
			if(top>=M)break; 
			if(a[j]==stack[top]){
				top--;
			}
			if(top<0)stack[++top]=++num;
			j++;
		}
		if(j==N)printf("YES\n");
		else printf("NO\n"); 
	}
	return 0;
}

你可能感兴趣的:(中国大学MOOC-陈越,何钦铭-数据结构-2018春)