题目描述:
判断“IOIOIOIO”这样的序列(I为入栈,O为出栈,用一维数组存储)是否为合法的操作序列
算法思想:
核心代码:
bool fun(SqStack &S)
{
int x;
int n=6;
char s[6]={'I','O','I','O','O','O'};
for(int i=0;i<n;i++)
{
if(s[i]=='I')
Push(S,s[i]);
else
if(s[i]=='O'&&StackEmpty(S)==true)
return false;
else
Pop(S,x);
}
if(StackEmpty(S)==true)
return true;
else
return false;
}
int fun2(char A[])
{
int i=0,j=0,k=0;
for(;A[k]!='\0';k++)
{
if(A[k]=='I')
i++;
if(A[k]=='O')
j++;
if(i<j)
return false;
}
if(i==j)
return true;
else
return false;
}
int main()
{
// SqStack S;
// InitStack(S);
// bool l=fun(S);
// printf("%d",l);
char *s="IOI";
bool l=fun2(s);
printf("%d",l);
return 0;
}
一个小的知识点:
字符数组的初始化方式:
- char *s=“IOI”;可以用A[k]!=’\0’来判断是否到达链表尾。
- char s[6]={‘I’,‘O’,‘I’,‘O’,‘O’,‘O’};这个就不能用上述的方式来判断是否到达链表尾了。