Exercise 2(b)
采用栈的方法,为下面的说明编写一个函数copy_stack:
Error_code copy_stack(Stack &dest , Stack &source);
前置条件:无。
后置条件:Stack dest已经成为Stack source的一个完全副本,而source未被改变。如果检测到错误,则返回一个合适的代码,否则返回success。
写出函数:
使用Stack方法和一个临时的Stack,从Stack source中抽取元素并将每个元素加入到Stack dest中,并恢复Stack source。
Error_code copy_stack(Stack &dest,Stack &source)
{
Error_code detected=success;
Stack temp;
Stack_entry item;
while(detected==success&&!source.empty()}
{
detected=source.top(item);
detected=source.pop();
if(detected==success)detected=temp.push(item);
}
while (detected==success&&!temp.empty()
{
detected=temp.top(itemp);
detected=temp.pop();
if (detected==success)detected=source.push(item);
if (detected==success)detected=dest.push(item);
}
return detected;
}