双端队列
只允许从两端插入、两端删除的线性表
队列的变种
输入受限的双端队列:只允许从一端插入、两端删除的线性表
输出受限的双端队列:只允许从两端插入、一端删除的线性表
考点:判断输出序列合法性
栈的应用–括号匹配
最后出现的左括号最先被匹配(LIFO):可用“栈”实现该特性
每出现一个右括号,就“消耗”一个左括号
遇到左括号就入栈
算法实现
bool bracketCheck(char str[],int length){
sqstack S;
initsrack(S);
for(int i=0;i<length;i++){
if(str[i]=='('||str[i]=='['||str[i]=='{'){
Push(S,str[i]);
}else{
if(stackempty(S))
return false;
char topelem;
pop(S,topelem);
if(str[i]==')'&&topelem!='(')
return false;
if(str[i]=='}'&&topelem!='{')
return false;
if(str[i]==']'&&topelem!='[')
return false;
}
}
return stackempty(S);
}