没有错误的工作功能

时间:2010-04-12 22:42:05

标签: c++

我已经实现了一个函数来在像这样插入节点之后显示一个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);
}

编译后,没有错误,程序有效,但屏幕上没有打印

请帮助我.... !! 感谢

4 个答案:

答案 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 ..

相关问题