猿问

数据结构(C++)?

数据结构(C++)


holdtom
浏览 564回答 2
2回答

守着一只汪

你的那个Bool不应该自己定义,应该直接用标准本来就自带的bool类型;即使你要自己定义,你也应该定义为enum Bool{FALSE, TRUE}。因为在C++里,bool和int是可以相互转换的,而enum和int也是相互转换的。如果false放在后面,则返回false将会返回1,也就是系统本身的true值。也就是说返回false反而变成了true,这直接导致了你的full函数出现了问题。从而你的push函数一直返回overflow。

汪汪一只猫

没弄明白你的这个栈是干什么的,下面说说它的错误:首先是编译不通过,除了在声明error_code这个枚举类型时,你使用error_code这个名字,在后面的所有函数返回error_code都是错的,比如,error_code stack::get_top(int &x){if(empty())return underflow;else{x=A[count-1];return success;}}修改为返回int。还有,系统本身就有bool类型的值,true false,并且值一般都是1 和 0;你定义这个类型 enum Bool{TRUE,FALSE}; 完全是没有必要,或者说是错误。所以把你定义的这个删掉,然后程序里面出现的TRUE,FALSE,改成系统的。
随时随地看视频慕课网APP
我要回答