满意答案
pz6832
2013.04.28
采纳率:44% 等级:12
已帮助:6970人
2.【解】
int matching(SqList L){
//判定顺序表L所保存算术表达式中括号是否匹配,若匹配则返回1,否则返回0
InitStack(S); //初始化辅助栈S
for (i=0;i
e=L.elem[i];
switch(e){
case ‘(':
case ‘[':
case ‘{': Push(S,e);break;
case ‘)': if (StackEmpty(S)) return ERROR; //右括号个数多于左括号
Pop(S,k);
if (k!=‘(') return ERROR; //括号嵌套错
break;
case ‘]': if (StackEmpty(S)) return ERROR;
Pop(S,k);
if (k!=‘[') return ERROR;
break;
case ‘}': if (StackEmpty(S)) return ERROR;
Pop (S,k);
if (k!=‘{') return ERROR;
}//switch
}//for
if (EmptyStack(S)) return OK; //括号匹配
else return ERROR; //左括号个数多于右括号
}//matching
3.Status EnCyQueue(CyQueue &Q,int x)//带tag域的循环队列入队算法
{
if(Q.front==Q.rear&&Q.tag==1) //tag域的值为0表示"空",1表示"满"
return OVERFLOW;
Q.base[Q.rear]=x;
Q.rear=(Q.rear+1)%MAXSIZE;
if(Q.front==Q.rear) Q.tag=1; //队列满
}//EnCyQueue
Status DeCyQueue(CyQueue &Q,int &x)//带tag域的循环队列出队算法
{
if(Q.front==Q.rear&&Q.tag==0) return INFEASIBLE;
Q.front=(Q.front+1)%MAXSIZE;
x=Q.base[Q.front];
if(Q.front==Q.rear) Q.tag=1; //队列空
return OK;
}//DeCyQueue
分析:当循环队列容量较小而队列中每个元素占的空间较多时,此种表示方法可以节约较多的存储空间,较有价值
10分享举报