递归的运算
阅读算法,回答下列问题:1.设队列Q=(1,3,5,2,6)。写出执行算法F2后的队列
2.简述算法F2的功能。
void F2(Queue *Q){
DataType e;
if (!QueueEmpty(Q)){
e=DeQueue(Q);
F2(Q);
EnQueue(Q,e);
}
}
答案:6,4,2,5,3,1
功能:将队列倒置
其中DeQueue(Q)删除Q的对头元素,将删除的元素赋给e
EnQueue(Q,e)是插入元素e为Q的新的队尾元素
问题:在执行第一次时,DeQueue(Q)删除Q了对头元素,将删除的元素赋给e(此时e=1),然后进入调用,执行第二次F2,DeQueue(Q)又删除Q了对头元素,将删除的元素赋给e(此时e=2),如此类推,我的问题是在下一次执行e的赋值时为什么不会将上一次e的值覆盖,例如:第二次执行是 e=2 的值为什么不会将 e=1 的值覆盖
求路过的各位大神解答