判定字符串是否按照出栈顺序
代码中所引用头文件源自之前的一篇的完成顺序栈与链式栈博客。
题目解析如下:
代码如下:
#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;
}