我已经实现了一个函数来在像这样插入节点之后显示一个avl树
template<class nodetype>
void AVLtree<nodetype>::display() const
{
display(Proot);
}
template<class nodetype>
void AVLtree<nodetype>::display(Node<nodetype> * ptr) const
{
if(ptr==0)
return ;
cout<<ptr->value<<" ";
display(ptr->Pleft);
display(ptr->Pright);
}
编译后,没有错误,程序有效,但屏幕上没有打印
请帮助我.... !! 感谢答案 0 :(得分:4)
(假设您的树构建正确)。屏幕输出通常是行缓冲的。您需要将std::endl
输出到std::cout
(或至少'\n'
个字符)才能显示在屏幕上。
当然,如果您的树构建不正确,根指针可能为空,并且出于显而易见的原因(仅猜测)不会打印任何内容。
最后,即使你的树构建正确,但是所有数据(ptr->value
)都是,例如,只是空的字符串(例如)或只包含空格,那么难怪你看不到任何东西在屏幕上。
答案 1 :(得分:3)
我喜欢使用的一种技术是在调试字符串周围添加分隔符:
cout << "-->" << ptr->value << "<--" << endl;
这样,很容易区分空输出和无输出。
您可能还想添加一些显示整个树为空的内容:
void AVLtree<nodetype>::display() const
{
if (Proot)
display(Proot);
else
cout << "empty tree" << endl;
}
答案 2 :(得分:1)
如果您在控制台窗口上打印,则此功能可能有用:
void Pause(void)
{
cout << "\nPaused, press ENTER to continue.\n";
cin.ignore(10000, '\n');
return;
}
在exit
中的任何return
方法或main
语句之前调用此函数。
答案 3 :(得分:-2)
首先你需要进行概念性改革..谁告诉你你可以将ptr与0进行比较? 您是否尝试建议无效的指针等于0?那完全错了..试试这个:
#include<iostream>
#include<conio.h>
using namespace std;
int main () {
int *p = NULL ;
cout<<*p<<endl;
getch();
return 0;
}
并且您的程序崩溃了...将ptr与NULL进行比较而不是0 ..