考研计算机算法专业,计算机考研:数据结构常用算法解析(3)

本文介绍了一种将中缀表达式转化为后缀表达式的算法实现过程,包括如何处理运算符优先级及括号匹配等问题。此外,还讨论了栈在该算法中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中缀表达式转化成后缀表达式算法

void trans-post(char E[n] ,char B[n]) //中、后缀表达式转换//

{ //E[n]是中缀表达式、B[n]是后缀表达式存储的空间

int i=0,j=0; char x; stype S;

Clearstack(S); Push(S,‘#’);//‘#’入栈//

do {

x=E[i++] ; //扫描当前表达式分量//

if (x=‘#’) //到了中缀表达式最后了

while(!Emptystack(S)) //全部退栈,#和#是优先级最低的,

B[j++]==pop(S); //所以当前栈的所有运算都要规约

//输出栈顶运算符,并退栈直到遇见栈底的开始放进去的那个#//

else if (isdigit(x))

B[j++]=x; //操作数直接输出//

else if (x=‘)’) //遇到)那么就一定要找到(

{

while (Getstop(S)!=‘(’)

B[j++]=pop(S); //输出栈顶,并退栈//

pop(S); //退掉‘(’//

}

else //x为运算符//

{

while (precede(Getstop(S), x)) //栈顶( q1)与x比较//

B[j++]=pop(S); // q1 >=x时,输出栈顶符并退栈//

Push(S,x); // q1 < x时x进栈//

}

} while (x!=’#’);

B[j]=’#’;

} //置表达式结束符//

双端队列:

两端都可以插入和删除,但实际应用中通常是输出受限的双端对列和输入受限的双端队列

输入受限的双端队列指的是:一端可以输入输出另一端只能输出不能输入

输出受限的双端队列指的是:一端可以输入输出另一端只能输入不能输出

求从迷宫入口到出口的一条最短路径

要用到队列,因为队列可以用在广度优先中,队列中的元素表示离中心点依次越来越远。

所以第一次找到出口肯定是半径最短的。

链式栈:

a0

^

a1

top ……

An

链式队列:

front

rear

q

a0

an-1

^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值