最新回答 / 慕尼黑8374427
怎么可能啊,m_iTop最多就是n,push()方法一开始不是有判断是否为full么,你push第n+1个元素的时候就直接return false,根本执行不到m_iTop++
2018-02-03
最新回答 / 慕标6516834
elem只是作为一个中间值,做一个跳板,在m_iTop下标减一,指向出栈,如果写成m_pBuffer[m_iTop] = elem,因为传递的是引用,那么你的m_pBuffer[m_iTop]的值就被赋值为你主函数传递的值。个人见解,理解错了,勿喷。
2017-07-28
最新回答 / BingBing_Elf
首先,我觉得你可能没明白栈顶元素的位置,它的位置一直是在一个空位置,这样才可以有位置来存储新的进栈元素,这也是老师说为什么m_iTop这个角标和元素个数相等的原因,也就是说,当你元素为5个时,存储的角标为0-4,但是你的m_iTop在5的位置。所以,在空栈的情况下,是不是首位置就应该是空的,即它的角标为0,当一个元素入栈后,就可以插入到角标为m_iTop的位置了,插入后一定要进行m_iTop++,让指针指向下一个位置,以便下一个元素的入栈。希望可以帮到你(✿◡‿◡)
2017-07-07
最赞回答 / 我是一只小蜗牛
因为C++ 默认的拷贝构造函数是浅拷贝,咋们案例是值这种东西,所以可以直接赋值;但是如果涉及到指针,那么用浅拷贝容易造成内存泄漏,因为你的地址是一样的,释放两次会出现内存泄漏,这时候你就要自己实现拷贝构造函数了,而不能使用默认的拷贝构造函数
2017-06-03
最新回答 / 晨墨_V
因为你是先入栈再赋值need。第一次循环的时候,need==0,所以直接need = ']',pNeed里有],第二次循环need==),然后满足条件。case'[':if (need != 0){cout << "第" << i + 1 << "次入另一个栈:";pNeed->push(need);cout << need<<endl;}need = ']';break;
2017-04-03