SeqStack S1, S2, tmp;
DataType x; ...//假设栈tmp和S2已做过初始化 while ( ! StackEmpty (&S1)) { x=Pop(&S1) ; Push(&tmp,x); } while ( ! StackEmpty (&tmp) ) { x=Pop( &tmp); Push( &S1,x); Push( &S2, x); }
1. while ( ! StackEmpty (&S1)){...} 第一次循环,将栈S1中所有的元素出栈,并放入栈tmp中
2. while ( ! StackEmpty (&tmp) ){...} 第二次循环,将tmp中的元素出栈,并分别放入栈S1和S2中
执行完两次循环后,S1和S2中元素一样,并且和初始的S1中的元素顺序一致,tmp依然为空,所以整个这段代码完成的功能就是把S1中的元素拷贝到S2中去。
2. while ( ! StackEmpty (&tmp) ){...} 第二次循环,将tmp中的元素出栈,并分别放入栈S1和S2中
执行完两次循环后,S1和S2中元素一样,并且和初始的S1中的元素顺序一致,tmp依然为空,所以整个这段代码完成的功能就是把S1中的元素拷贝到S2中去。
温馨提示:答案为网友推荐,仅供参考