最赞回答 / qq_第天堂_03899060
#include <iostream>#include "Stack.h" using std::string;using std::cout;using std::endl; /** * 检测字符串中的括号是否匹配 * @param str 待检测匹配的字符串 * @param tps1 匹配的符号 * @param tps2 与tps1相匹配且顺序一致的符号 * @return 括号是否匹配的布尔值 */bool isPaired(string str, string tps1, stri...
2016-10-04
最新回答 / weixin_慕雪0498266
m_iTop是栈顶指针所在位置,而栈顶指针比最后进入栈数据的位置大1(栈顶指针指向栈最后一个元素后面一个位置),m_iTop--则表示栈中最后一个元素的位置
2016-09-16
最赞回答 / MAKER_01
应该是栈存储和数组存储一样,首地址为0,新增一个元素后m_iTop+1,指向下一个位置,元素存在位置0的内存中。因此第n个元素位置和对应的m_iTop=n指向的位置不同
2016-08-03
最赞回答 / 黑巫师0
m_pBuffer = new char[size]; 使用new动态申请了size个char类型大小的空间,如果把char换成类名时,就是申请size个类名大小的空间。但只要是给类实例化对象申请空间,就要调用类的构造函数,而所写的构造函数如果是Coordinate(int x , int y ); 不是默认构造函数,参数没有默认值,在实例化对象时,就必须给赋予x,y值,否则就会报错,而使用new运算符申请多个内存时,无法为每个对象都赋初值x,y。那样就会报错。因此就需要将构造函数改为有默认值的构造函...
2016-07-21
最新回答 / 翔纪念83574491
说一下出桟操作的,如果前面if语句满足要求的话,程序就直接return,后面的就不会执行,如果不满足要求的话,程序就会跳过if语句,执行后面的return语句,因此push那个操作是没有问题的
2016-07-14
最赞回答 / 我呵呵了
如果if(!pNeedStack->pop(currentNeed)){currentNeed=0;} 括号里面的条件是false,就相当于!pNeedStack->pop(currentNeed) 这句话是错的,注意前面的“!”,这句话要是错的,那么pNeedStack->pop(currentNeed) 就为真, 这句话本身也是一个出栈的操作,所以说,如果是真的话,会有东西出栈的,存到了currentNeed中。
2016-05-28
最赞回答 / 慕村3311326
这据说是VC的一个经典BUG。和namespace也有关. 只要含有using namespace std; 就会提示友员函数没有访问私有成员的权限。 解决方法:去掉using namespace std;换成更小的名字空间。 using std::endl; using std::cout;using std::ostream;或者将重载运算符函数放在Coordinate类中去定义。亲测两种均有效
2016-05-27