栈是数据结构中的一个重要应用,今天做华为的笔试题想要就此积累一下
此题可以看成是括号匹配题的一个改进。
首先栈的定义和基本函数的书写为:
struct stack
{
char strstack[stacksize];
int top;
};
void InitStack(stack &s)
{
s.top=-1;
}
char Push(stack &s,char a)
{
if(s.top==stacksize-1)
{
return 0;
}
s.top++;
s.strstack[s.top]=a;
return a;
}
char Pop(stack &s)
{
if(s.top==-1)
{
return 0;
}
char a=s.strstack[s.top];
s.top--;
return a;
}
int Empty(stack &s,int re)
{
if(s.top==-1)
{
return 1;
}
else
{
return 0;
}
}
以上为栈的顺序存储的基本实现和操作
对于华为面试题的算法思路可以为:
(则入栈,)则判断上一个是(还是其他字符,是(则有一对匹配的括号
碰到其他字符则将栈清空(