我正在为左派堆编译一些代码,我想逐步完成我的levelorder遍历功能。但是,每当我在“theheap.levelorder()”到达断点并输入“step”时,gdb就会传递代码。
我正在使用-g标志进行编译并尝试使用-fno-inline无效。为什么会这样?
我的makefile如下:
all:LeftistHeap.o lab10.o
g++ LeftistHeap.o lab10.o -g -o lab10
lab10.o:LeftistHeap.h
g++ -fno-inline -g -c lab10.cpp
LeftistMax.o:LeftistHeap.h LeftistHeap.cpp
g++ -fno-inline -g -c LeftistHeap.cpp
clean:
rm *.o *~ lab10
修改 我有两个levelorder()函数:一个私有,一个公共。我知道这可能是不必要的,但它不应该导致gdb这样做。
levelorder在.h文件中声明如下:
public:
void levelorder();
private:
void levelorder(LNode* node);
levelorder在.cpp文件中定义如下:
void LeftistHeap::levelorder()
{
levelorder(root);
}
void LeftistHeap::levelorder(LNode* node)
{
queue<LNode*> currentLevel, nextLevel;
currentLevel.push(root);
while(!currentLevel.empty())
{
LNode* temp = currentLevel.front();
currentLevel.pop();
if(temp)
{
cout << temp->key << " ";
if(temp->lchild != NULL)
nextLevel.push(temp->lchild);
if(temp->lchild != NULL)
nextLevel.push(temp->rchild);
}
if(currentLevel.empty())
{
cout << endl;
swapq(currentLevel, nextLevel);
}
}
}