判定字符串是否按照出栈顺序
代码中所引用头文件源自之前的一篇的完成顺序栈与链式栈博客。
题目解析如下:
代码如下:
#include"seqstack.h" #include<stdio.h> int stackTrue(SeqStack* stack,char* input,char* output) { if(stack == NULL) { //非法输入 return 0; } while(*input != '\0') { SeqStackPush(stack,*input); char top; int ret = SeqStackGet(stack,&top); while(top == *output) { SeqStackPop(stack); output++; ret = SeqStackGet(stack,&top); if(ret == 0) break; } input++; } //if(*out == '\0'); //本想用'\0'来判定ouput数组是否到达末尾,可是不能得到正确结果 //暂用'0'插入output数组尾端代替判定条件 if(*output == '0') return 1; else return 0; } int main() { SeqStack stack; SeqStackInit(&stack); //入栈顺序 char arr1[] = "abcde"; //出栈顺序 //char arr2[] = "bceda"; char arr2[] = {'b','c','e','d','a','0'}; int ret = stackTrue(&stack,arr1,arr2); printf("expect ret is 1,actul ret is %d\n",ret); char arr3[] = {'b','c','e','a','d','0'}; ret = stackTrue(&stack,arr1,arr3); printf("expect ret is 0,actul ret is %d\n",ret); return 0; }