c++小问题....

来源:百度知道 编辑:UC知道 时间:2024/05/29 22:55:03
int gcd3(int a, int b) {
stack<int> x;
x.push(a); x.push(b);
while(1) {
int y=x.front();
x.pop();
int z=x.front();
x.pop();
if(z%y==0) return y;
x.push(y); x.push(z%y);
}
}

这哪里错了???stack是什么?front() 和.pop();是什么作用的?

stack是栈,先进后出的一种数据结构
front()返回栈首元素
pop() 出栈,删除栈首元素
push()入栈,在栈首插入该元素
===================================
我想你的循环条件有问题
while(1)是无穷的
另外,x.push(z%y); 是要把余数压入,还是z/y?

stack是栈,先进后出的一种数据结构
front()这个不知道,估计错误出在这里
pop() 出栈,删除栈首元素
push()入栈,在栈首插入该元素
===================================
我想你的循环条件有问题
while(1)是死循环

如果stack这个模板是你自己定义的,那么确保你定义了类的方法front(),如果不是你自己定义的是用的c++库的,那么请加上包含头文件
#include <stack>
using namespace std;

然后把front改为top,或者在你的头文件上方#define front top.我在vs2008和vc6里都试过了,没front这个方法。

front() 返回stack第一个元素的值。
pop(),返回stack最后一个元素的值,并删除stack的最后一个元素