数据结构c语言版第二版课后答案第三章,求解答 《 数据结构C语言版》第三章习题...

满意答案

00e27ab806e4881f8254fe7ae8741834.png

pz6832

2013.04.28

00e27ab806e4881f8254fe7ae8741834.png

采纳率: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分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值