E2(a)//写一个方法一个链栈大小通过使用一个循环移动节点到节点的指针变量形式通过堆栈
int Stack::size()const
{
Node *temp = top_node;
int count = 0;
while(temp!=NULL)
{
temp = temp->next;
count++;
}
return 0;
}
E2://赋值top_node = new_copy.top_node离开前的节点左边的赋值运算符作为垃圾。另外,当函数结束后,静态分配Stack new_copy将损毁,这将破坏新分配的左边的赋值运算符.
我们可以避免这两个问题都通过交换指针(顶级节点top_node)和(新副本顶级节点new_copy.top_node)在以下。
void Stack::operator = (const Stack &original)
{
Stack new_top(original);
Node *temp = top_node;
top_node = new_copy,top_node;
new_copy.top_node = temp;
}