Status match (char *exp) {
SqStack S;
InitStack(S);
char c;
int b = 1, i = 0; //b为标志位=1时表示括号配对while (exp[i] != ‘\0’ && b ==1) {
//遇到‘(’、‘[’或者‘{’,则压入栈中if (exp[i] == ‘(’ || exp[i] == ‘[’ || exp[i] == ‘{’)
Push(S, exp[i]);
elseif (exp[i] == ‘)’) { //若当前是‘)’if (!StackEmpty(S)) {
Pop(S, c); //弹出栈顶元素if (c != ‘(’) // 若不是对应的‘(’
b = 0; //设置标志位为“不配对”
}
else
b = 0;
}
elseif (exp[i] == ‘]’) { //若当前是‘]’if (!StackEmpty(S)) {
Pop(S, c); //弹出栈顶元素if (c!= ‘[’) // 若不是对应的‘[’
b=0; //设置标志位为“不配对”
}
else
b = 0;
}
elseif (exp[i] == ‘}’) { //若当前是‘}’if (!StackEmpty(S)) {
Pop(S, c); //弹出栈顶元素if (c!= ‘{’) // 若不是对应的‘[’
b = 0; //设置标志位为“不配对”else
b = 0;
}
i ++; //继续处理下一个字符
}// end of whilereturn (b && StackEmpty(S);
}
假设用循环单链表实现循环队列,该队只使用一个队尾指针rear。请设计出相应的存储结构和如下基本运算算法。 a) 初始化队列InitQueue(Q):建立一个新的空队列Q。 b) 入队列Enter(Q, x):将元素x插入到队列Q中。 c) 出队列Delete(Q, x):从队列Q中删除一个元素。 d) 取队首元素Gethead(Q,x):返回当前的队首元素。