指出下述程序段的功能是什么?

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中去。
温馨提示:答案为网友推荐,仅供参考
相似回答