趁着复习把课上的作业和代码上传上来嘿嘿嘿,这个系列的代码都是自己写的或者老师教学用的可能内存管理上有点小瑕疵,但是算法理解还是不错的!本系列所有代码在dev-cpp上可以跑通~
描述:
假设以ABCDEFG入栈(出栈顺序随机),现在给你一段出栈序列比如DACBEFG,判定是否满足FILO的要求。
思路:
先ABCDEFG进栈的时候看出栈序列,如果对上了,退栈,如果发现栈满了,或者到G都进完栈了,出栈的还是对不上,那就不满足,如果最后全都对上了,而且栈空了,那就是满足。
代码:
#include<stdio.h>
int main(){
char v='A',s,Q[8];
Q[0]=v;
int count=0,top=1;
while(count<8){
scanf("%c",&s);
count++;
while(Q[top-1]!=s&&v<'H'){
Q[top++]=++v;
}
if(Q[top-1]==s&&v<='H'){
top--;
}
else{
break;
}
}
if(top){
printf("0");
}
else{
printf("1");
}
return 0;
}
栈这结构其实用一个数组和一个top指针就可以维护了,出栈的话是Stack[--top],入栈的话是Stack[top++],注意前置和后置的区别,然后出栈顺序有一个231invalid的性质,就是如果入栈顺序是123,那么是一定不会出现231的出栈顺序的。
这篇博客介绍了一个检查给定出栈序列是否符合先进后出(FILO)原则的算法。作者通过一个C语言实现的代码示例,展示了如何在已知入栈顺序的情况下,验证随机出栈序列是否满足栈的特性。代码中使用了一个数组和top指针来模拟栈结构,并通过一个while循环进行判断。如果最终栈为空且序列匹配,则满足条件,反之则不满足。
700





