C++ 不工作的功能没有错误

C++ 不工作的功能没有错误,c++,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)

我已经实现了一个函数,可以在像这样将节点插入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);
}
模板
void AVLtree::display()常量
{
显示(Proot);
}
模板
void AVLtree::显示(节点*ptr)常量
{
如果(ptr==0)
返回;
cout(假设您的树构建正确)。屏幕输出通常是行缓冲的。您需要将
std::endl
输出到
std::cout
(或至少是
'\n'
字符),才能在屏幕上显示某些内容

当然,如果树的构建不正确,那么根指针可能为null,并且由于明显的原因(只是猜测),不会打印任何内容

最后,即使您的树构建正确,但所有数据(
ptr->value
)都是空字符串(例如)或仅包含空格,也难怪您在屏幕上看不到任何内容。

(假设您的树构建正确).屏幕输出通常是行缓冲的。您需要将
std::endl
输出到
std::cout
(或至少是
'\n'
字符),才能在屏幕上显示某些内容

当然,如果树的构建不正确,那么根指针可能为null,并且由于明显的原因(只是猜测),不会打印任何内容


最后,即使您的树构建正确,但所有数据(
ptr->value
)都是空字符串(例如)或仅包含空格,也难怪您在屏幕上看不到任何内容。

如果您在控制台窗口上打印,则此函数可能有用:

void Pause(void)
{
    cout << "\nPaused, press ENTER to continue.\n";
    cin.ignore(10000, '\n');
    return;
}
void暂停(void)
{

cout如果您在控制台窗口上打印,此功能可能有用:

void Pause(void)
{
    cout << "\nPaused, press ENTER to continue.\n";
    cin.ignore(10000, '\n');
    return;
}
void暂停(void)
{

cout我喜欢使用的一种技术是在调试字符串周围添加分隔符:

cout << "-->" << ptr->value << "<--" << endl;

cout我喜欢使用的一种技术是在调试字符串周围添加分隔符:

cout << "-->" << ptr->value << "<--" << endl;

cout首先,你需要对概念进行彻底检查。谁告诉你可以将ptr与0进行比较?
您是否试图建议如果nullified的指针等于0?这完全是错误的。请尝试以下方法:

#include<iostream>
#include<conio.h>

using namespace std;

int main () {

    int *p = NULL ;
    cout<<*p<<endl;

    getch();
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
int*p=NULL;

首先,你需要一个概念上的彻底检查。谁告诉你可以将ptr与0进行比较? 您是否试图建议如果nullified的指针等于0?这完全是错误的。请尝试以下方法:

#include<iostream>
#include<conio.h>

using namespace std;

int main () {

    int *p = NULL ;
    cout<<*p<<endl;

    getch();
    return 0;
}
#包括
#包括
使用名称空间std;
int main(){
int*p=NULL;

这里看不到问题。你如何填充你的树?没有错误?警告如何?仅仅因为你的代码语法正确并不意味着它绝对正确:)什么是nodetype?你确定它发送到cout时应该打印任何内容吗?我看不到问题。你如何填充你的树?没有错误?警告如何?任何仅仅因为你的代码是语法正确的并不意味着它是绝对正确的:)什么是nodetype?你确定它在发送到cout时应该打印任何东西吗?尽管我个人更喜欢std::getline(在标题中)而不是cin。忽略:std::string buffer;std::getline(cin,buffer);尽管我个人更喜欢std::getline(在标题中)而不是cin.ignore:std::string buffer;std::getline(cin,buffer)在C++中,NULL和0是相同的东西。参见Stroustrup自己的详细信息。也使用<代码> int *p=0;< /Cord>并尝试使用<代码> *p>代码>去引用它也将导致崩溃。- 1,对不起。<代码> null <代码>被精确定义为0。预处理后,<代码>(p=null)< /> >和<代码>如果(p= 0)在C/C++中,NULL和0是相同的东西,请参见Stroustrup自己的详细信息。也可以使用<代码> int *p=0;< /COD>并试图使用<代码> *P<代码>去引用它也将导致崩溃。- 1,对不起。<代码> null <代码>被精确定义为0。在预处理之后,<代码>(p= null)< /> >和<代码>(p==0)
无法区分。谢谢你,屏幕上打印了此工作树和“空树”…此功能中没有错误谢谢你,屏幕上打印了此工作树和“空树”…此功能中没有错误