知识大全 数据结构考研分类复习真题 第三章 答案[20]
Posted 表达式
篇首语:贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构考研分类复习真题 第三章 答案[20]相关的知识,希望对你有一定的参考价值。
[题目分析]表达式中的括号有以下三对 ( ) [ ] 使用栈 当为左括号时入栈 右括号时 若栈顶是其对应的左括号 则退栈 若不是其对应的左括号 则结论为括号不配对 当表达式结束 若栈为空 则结论表达式括号配对 否则 结论表达式括号不配对
int Match(LinkedList la) //算术表达式存储在以la为头结点的单循环链表中 本算法判断括号是否正确配对 char s[]; //s为字符栈 容量足够大 p=la >link; //p为工作指针 指向待处理结点 StackInit(s); //初始化栈s while (p!=la) //循环到头结点为止 switch (p >ch) case ( :push(s p >ch); break; case ) :if(StackEmpty(s)||StackGetTop(s)!= ( ) printf( 括号不配对\\n ); return( ); else pop(s);break; case [ :push(s p >ch); break; case ] : if(StackEmpty(s)||StackGetTop(s)!= [ ) printf( 括号不配对\\n ); return( ); else pop(s);break; case :push(s p >ch); break; case : if(StackEmpty(s)||StackGetTop(s)!= ) printf( 括号不配对\\n ); return( ); else pop(s);break; p=p >link; 后移指针 //while if (StackEmpty(s)) printf( 括号配对\\n ); return( ); elseprintf( 括号不配对\\n ); return( ); //算法match结束
[算法讨论]算法中对非括号的字符未加讨论 遇到右括号时 若栈空或栈顶元素不是其对应的左圆(方 花)括号 则结论括号不配对 退出运行 最后 若栈不空 仍结论括号不配对
cha138/Article/program/sjjg/201311/22702相关参考
知识大全 数据结构考研分类复习真题 第三章 栈和队列[20]
利用两个栈sls模拟一个队列时如何用栈的运算实现队列的插入删除以及判队空运算请简述这些运算的算法思想【北京邮电大学 一】【东南大学一(分)】 .一个循环队列的数据结构描述如下【西北工业
见上题的解答 参见上面题 typedefstructnode elemtypeelemcq[m]; //m为队列最大可能的容量 intfrontrear;
typedefstruct elemtpq[m]; intfrontcount; //front是队首指针count是队列中元素个数 cqnode; &nbs
[题目分析]本题与上面题基本相同现用类C语言给出该双端队列的定义 #definemaxsize typedefstruct datatypeelem[maxsize]; int
#definemaxsize栈空间容量 voidInOutS(ints[maxsize]) //s是元素为整数的栈本算法进行入栈和退栈操作 inttop=;  
s=(LinkedList)malloc(sizeof(LNode))s>data=x;s>next=r>nextr>next=sr=s 牺牲一个存储单元 &n
既不能由输入受限的双端队列得到也不能由输出受限的双端队列得到的输出序列是dbca () () &nbs
本题与上题本质上相同现用类C语言编写入队和出队算法 ()voidEnQueue(LinkedListrearElemTypex) //rear是带头结点的循环链队列的尾指针本算法将元素x插入到
intMaxValue(inta[]intn)//设整数序列存于数组a中共有n个本算法求解其最大值 if(n==)max=a[]; elseifa[n]>MaxValue(an)max=
[题目分析]这是以读入数据的顺序为相反顺序进行累乘问题可将读入数据放入栈中到输入结束将栈中数据退出进行累乘累乘的初值为 PROC test; CONSTmaxsize=; VARs