正在加载图片...
DeQueue(Q, a) xa. x,y-a. y X> if(glx-1y==old) glx-lty EnQueue(Q,{x-12y}),∥修改左邻点的颜色 if(glx]=old) glxly-1=color EnQueue(Q,{xy-l}),∥修改上邻点的颜色 f(x<m) if(gIx+1Ly]==old) g[x+1 ]ly=color EnQueue(Q,{x+1,y}),∥修改右邻点的颜色 if(glx]y+1]==old) glxly+1]color; EnQueue(Q,{xy+1}),∥修改下邻点的颜色 ∥whie i//Repaint Color 分析本算法采用了类似于图的广度优先遍历的思想用两个队列保存相邻同色点 的横坐标和纵坐标递归形式的算法该怎么写呢? 3.21 void NiBoLan(char* str char*new)∥/把中缀表达式str转换成逆波兰式new p=strq=new,∥为方便起见设str的两端都加上了优先级最低的特殊符号 InitStack(s,/s为运算符栈 if(*p是字母)*q+=*p,∥直接输出 else c=gettop( f(*p优先级比c高)push(s,*p)DeQueue(Q,a); x=a.x;y=a.y; if(x>1) if(g[x-1][y]==old) { g[x-1][y]=color; EnQueue(Q,{x-1,y}); //修改左邻点的颜色 } if(y>1) if(g[x][y-1]==old) { g[x][y-1]=color; EnQueue(Q,{x,y-1}); //修改上邻点的颜色 } if(x<m) if(g[x+1][y]==old) { g[x+1][y]=color; EnQueue(Q,{x+1,y}); //修改右邻点的颜色 } if(y<n) if(g[x][y+1]==old) { g[x][y+1]=color; EnQueue(Q,{x,y+1}); //修改下邻点的颜色 } }//while }//Repaint_Color 分析:本算法采用了类似于图的广度优先遍历的思想,用两个队列保存相邻同色点 的横坐标和纵坐标.递归形式的算法该怎么写呢? 3.21 void NiBoLan(char *str,char *new)//把中缀表达式 str 转换成逆波兰式 new { p=str;q=new; //为方便起见,设 str 的两端都加上了优先级最低的特殊符号 InitStack(s); //s 为运算符栈 while(*p) { if(*p 是字母)) *q++=*p; //直接输出 else { c=gettop(s); if(*p 优先级比 c 高) push(s,*p); else
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有