【正文】
} }Date 55。}while (!StackEmpty(S)){ Pop(S, d)。while (!QueueEmpty(Q)){ DeQueue(Q, d)。 int d。(8) }(9) }A B C3 A B C 02 B A C 81 A B C 8A B C3 A B C 02 B A C 83 A B C 0棧空3 A B C 02 B A C 8Date 54Data Structure簡述以下算法的功能(棧和隊列的元素類型均為 int)void algo3(Queue amp。(6) move(n,x,z)。(0) }void hanoi(int n,char x,char y,char z)(1) {(2) if(n==1)(3) move(1,x,z)。C39。B39。A39。m)。(8) }(9) }3 A B C 02 B A C 83 A B C 02 B A C 81 B C A 6A B C3 A B C 02 B A C 83 A B C 0A B CDate 53Data Structure main() { int m。(6) move(n,x,z)。(0) }void hanoi(int n,char x,char y,char z)(1) {(2) if(n==1)(3) move(1,x,z)。C39。B39。A39。m)。(8) }(9) }A B C3 A B C 02 A C B 61 C A B 8A B C3 A B C 02 A C B 63 A B C 03 A B C 02 A C B 6Date 52Data Structure main() { int m。(6) move(n,x,z)。(0) }void hanoi(int n,char x,char y,char z)(1) {(2) if(n==1)(3) move(1,x,z)。C39。B39。A39。m)。(8) }(9) }A B C1233 A B C 03 A B C 02 A C B 63 A B C 02 A C B 61 A B C 6A B C3 A B C 02 A C B 6Date 51Data Structure main() { int m。(6) move(n,x,z)。(0) }void hanoi(int n,char x,char y,char z)(1) {(2) if(n==1)(3) move(1,x,z)。C39。B39。A39。 printf(”Steps : %3d disks”,m)。 scanf(%d,amp。A B CDate 50Data Structure main() { int m。 將 n1個盤從 B移到 C。 把上面 n1個圓盤從 A移到 B216。Tower of Hanoi問題q問題描述A B CDate 49Data Structureq解決方法:v n=1時,直接把圓盤從 A移到 C。應用四:棧與遞歸的實現(xiàn)Date 47Data Structurer主程序srrrs子過程1 rst子過程2rst子過程3Date 48Data Structure 有 A,B,C三個塔座, A上套有 n個直徑不同的圓盤,按直徑從小到大疊放,形如寶塔 ,編號 1,2,3…… n。q而從被調(diào)用函數(shù)返回調(diào)用函數(shù)之前,應該完成:v 保存 被調(diào)函數(shù)的 計算結(jié)果 ;v 釋放被調(diào)函數(shù)的數(shù)據(jù)區(qū) ;v 依照被調(diào)函數(shù)保存的返回地址將控制轉(zhuǎn)移到調(diào)用函數(shù) 。 }//switch}//whilereturn GetTop(OPND)。 Push(OPND,Operate(a,theta,b))。 Pop(OPND,b)。break。case ‘=’://優(yōu)先權(quán)相等,脫括號并接收下一個字符Pop(OPTR,x)。 c=getchar()。 c=getchar()。c=getchar()。 Push(OPTR,’’)。Date 44Data Structure操作數(shù) 運算符12計算 2+43*6操作數(shù) 運算符24+操作數(shù) 運算符6 操作數(shù) 運算符6 36 *操作數(shù) 運算符6 18 Date 45Data Structure算法 算術(shù)表達式求值的算符優(yōu)先算法OperandType EvaluateExpression(){//設 OPTR和 OPND分別為運算符棧和運算數(shù)棧, OP為 運算符集合。 若 運算符優(yōu)先級等于 OPTR中的棧頂元素 ,則將 OPTR中的棧頂元素出棧。 若 運算符優(yōu)先級高于 OPTR中的棧頂元素 ,則運算符入棧;252。 若是 運算符,則和 OPTR中的棧頂元素做比較再操作 。v 依次讀入表達式中的每個字符216。216。q算術(shù)運算的規(guī)則v 先乘除后加減