1,  若入栈的元素为n,则可得到的输出序列数量为 (2n)!/(n+1)(n!)(n!)

2,  用两个长度相同的栈S1,S2构造一个队列。在S1中进行入队操作,S2中进行出队操作 ,判断队列空的条件是,S1S2同时为空,判断队列满的条件是S1S2同时为满。

数据结构复习笔记(2)_递归算法void EnQueue(ElemType x)
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
if(!Full(S1))
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{//S1未满直接进入
数据结构复习笔记(2)_非递归_05
        S1.Push(x);
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_非递归_05    
else
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        
if(Empty(S2)==true)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07        
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05            
while(!Empty(S1))
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07            
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05                S2.Push(S1.Pop());
数据结构复习笔记(2)_逆波兰式_10            }

数据结构复习笔记(2)_非递归_05            S1.Push(x);        
数据结构复习笔记(2)_逆波兰式_10        }

数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_递归算法_28}

数据结构复习笔记(2)_递归算法
数据结构复习笔记(2)_递归算法ElemType DeQueue()
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
if(!Empty(S2))
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        
return S2.Pop();
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_非递归_05    
else
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        
if(!Empty(S1))
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07        
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05            
while(!Empty(S1))
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07            
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05                S2.Push(S1.Pop());
数据结构复习笔记(2)_逆波兰式_10            }

数据结构复习笔记(2)_非递归_05            
return S2.Pop();
数据结构复习笔记(2)_逆波兰式_10        }

数据结构复习笔记(2)_非递归_05        
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_递归算法_28}

数据结构复习笔记(2)_递归算法

3.求两个正整数的最大公约数的非递归算法。

数据结构复习笔记(2)_递归算法#define MAX 100
数据结构复习笔记(2)_递归算法
struct Stack
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
int s;
数据结构复习笔记(2)_非递归_05    
int t;
数据结构复习笔记(2)_递归算法_28}
;
数据结构复习笔记(2)_递归算法
数据结构复习笔记(2)_递归算法
int gcd(int m,int n)
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
int k;
数据结构复习笔记(2)_非递归_05    Stack S[MAX];
数据结构复习笔记(2)_非递归_05    
int top = -1,tmp;
数据结构复习笔记(2)_非递归_05    
if(m<n)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        tmp 
= m;
数据结构复习笔记(2)_非递归_05        m 
= n;
数据结构复习笔记(2)_非递归_05        n 
= tmp;
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_非递归_05    top
++;
数据结构复习笔记(2)_非递归_05    S[top].s 
= m;
数据结构复习笔记(2)_非递归_05    S[top].t 
= n;
数据结构复习笔记(2)_非递归_05    
while(top>=0&&S[top].t!=0)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        
if(S[top].t!=0)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07        
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05            tmp 
= S[top].s;
数据结构复习笔记(2)_非递归_05            m 
= S[top].t;
数据结构复习笔记(2)_非递归_05            n 
= m%tmp;
数据结构复习笔记(2)_非递归_05            top
++;
数据结构复习笔记(2)_非递归_05            S[top].s 
= m;
数据结构复习笔记(2)_非递归_05            S[top].t 
= n;
数据结构复习笔记(2)_逆波兰式_10        }

数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_非递归_05    
return S[top].s;
数据结构复习笔记(2)_递归算法_28}

数据结构复习笔记(2)_递归算法

4

                      n+1,m =0

Akm(m,n)  =           Akm(m-1,1) m!=0,n=0

                      Akm(m-1,Akm(m,n-1)),m!=0,n!=0

写非递归算法。

数据结构复习笔记(2)_递归算法#define MAXSIZE 100
数据结构复习笔记(2)_递归算法typedef 
struct
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
int tm;
数据结构复习笔记(2)_非递归_05    
int tn;
数据结构复习笔记(2)_递归算法_28}
Stack;
数据结构复习笔记(2)_递归算法
数据结构复习笔记(2)_递归算法
int akm(int m,int n)
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    Stack S[MAXSIZE];
数据结构复习笔记(2)_非递归_05    
int top = 0;
数据结构复习笔记(2)_非递归_05    S[top].tm 
= m;
数据结构复习笔记(2)_非递归_05    S[top].tn 
= n;
数据结构复习笔记(2)_非递归_05    
do
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        
while(S[top].tm!=0)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07        
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05            
while(S[top].tn!=0)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07            
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05                top
++;
数据结构复习笔记(2)_非递归_05                S[top].tm 
= S[top-1].tm;
数据结构复习笔记(2)_非递归_05                S[top].tn 
= S[top-1].tn-1;
数据结构复习笔记(2)_逆波兰式_10            }

数据结构复习笔记(2)_非递归_05            S[top].tm
--;
数据结构复习笔记(2)_非递归_05            S[top].tn
=1;
数据结构复习笔记(2)_逆波兰式_10        }

数据结构复习笔记(2)_非递归_05        
if(top>0)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07        
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05            top
--;
数据结构复习笔记(2)_非递归_05            S[top].tm
--;
数据结构复习笔记(2)_非递归_05            S[top].tn 
= S[top].tn+1;
数据结构复习笔记(2)_逆波兰式_10        }

数据结构复习笔记(2)_非递归_05        
数据结构复习笔记(2)_逆波兰式_10    }
while(top!=0 || S[top].tm!=0);
数据结构复习笔记(2)_非递归_05    top
--;
数据结构复习笔记(2)_非递归_05    
return S[top+1].tn+1;
数据结构复习笔记(2)_递归算法_28}

5.写出和下列递归过程等价的非递归过程

数据结构复习笔记(2)_递归算法void test(int &sum)
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
int k;
数据结构复习笔记(2)_非递归_05    scanf(
"%d",&k);
数据结构复习笔记(2)_非递归_05    
if(k==0) sum = 1;
数据结构复习笔记(2)_非递归_05    
else
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        test(sum);
数据结构复习笔记(2)_非递归_05        sum 
= k*sum;
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_非递归_05    printf(
"%d",sum);
数据结构复习笔记(2)_递归算法_28}

数据结构复习笔记(2)_递归算法


分析:程序功能是按照输入的整数,按相反顺序进行累计乘法运算

数据结构复习笔记(2)_递归算法#define MAXSIZE 100
数据结构复习笔记(2)_递归算法
void test(int &sum)
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
int Stack[MAXSIZE];
数据结构复习笔记(2)_非递归_05    
int top = -1,k;
数据结构复习笔记(2)_非递归_05    sum 
= 1;
数据结构复习笔记(2)_非递归_05    scanf(
"%d",&k);
数据结构复习笔记(2)_非递归_05    
while(k!=0)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        Stack[
++top] = k;
数据结构复习笔记(2)_非递归_05        scanf(
"%d",&k);
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_非递归_05    printf(
"%d",sum);
数据结构复习笔记(2)_非递归_05    
while(top!=-1)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        sum 
*=Stack[top--];
数据结构复习笔记(2)_非递归_05        printf(
"%d",sum);
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_递归算法_28}

数据结构复习笔记(2)_递归算法        
数据结构复习笔记(2)_递归算法


6
.假设表达式由单字母变量和双目四则运算算符构成,写一个算法,将一个书写正确的表达式转换为逆波兰式。

数据结构复习笔记(2)_递归算法void ConPoland(char express[],char suffix[])
数据结构复习笔记(2)_四则运算_02数据结构复习笔记(2)_四则运算_03
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05    
char *= express,ch1 = *p,ch2;
数据结构复习笔记(2)_非递归_05    
int k = 0;
数据结构复习笔记(2)_非递归_05    InitStack(S);
数据结构复习笔记(2)_非递归_05    Push(S,
'#');
数据结构复习笔记(2)_非递归_05    
while(!StackEmpty(S))
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05        
if(!IsOperator(ch1))
数据结构复习笔记(2)_非递归_05            suffix[k
++= ch1;
数据结构复习笔记(2)_非递归_05        
else
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07        
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05            
switch(ch1)
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07            
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05                
case '(':    
数据结构复习笔记(2)_非递归_05                    Push(S,ch1);
break;
数据结构复习笔记(2)_非递归_05                
case ')':    
数据结构复习笔记(2)_非递归_05                    Pop(S,ch2);
数据结构复习笔记(2)_非递归_05                    
while(ch2!='(')    
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07                    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05                        suffix[k
++= ch2;
数据结构复习笔记(2)_非递归_05                        Pop(S,ch2);
数据结构复习笔记(2)_逆波兰式_10                    }

数据结构复习笔记(2)_非递归_05                    
break;
数据结构复习笔记(2)_非递归_05                
default:
数据结构复习笔记(2)_非递归_05                    
while(GetTop(S,ch2)&&precede(ch2,ch1))
数据结构复习笔记(2)_#define_06数据结构复习笔记(2)_#define_07                    
数据结构复习笔记(2)_逆波兰式_04{
数据结构复习笔记(2)_非递归_05                        suffix[k
++= ch2;
数据结构复习笔记(2)_非递归_05                        Pop(S,ch2);
数据结构复习笔记(2)_逆波兰式_10                    }

数据结构复习笔记(2)_非递归_05                    
if(ch1!='#')
数据结构复习笔记(2)_非递归_05                        Push(S,ch1);
数据结构复习笔记(2)_非递归_05                    
break;                            
数据结构复习笔记(2)_非递归_05                    
数据结构复习笔记(2)_逆波兰式_10            }

数据结构复习笔记(2)_逆波兰式_10        }

数据结构复习笔记(2)_非递归_05        
if(ch1!="#')    
数据结构复习笔记(2)_非递归_05
            ch1 = *++p;
数据结构复习笔记(2)_逆波兰式_10    }

数据结构复习笔记(2)_非递归_05    suffix[k] 
= '\0';
数据结构复习笔记(2)_递归算法_28}

数据结构复习笔记(2)_递归算法