视觉工作室的错误结果
wrong result in Visual Studio
我以前从未遇到过这种错误。当我在CodeBlock中编译时,我的代码工作正常,但是当我将代码复制到VS(2015社区)中时,它仅显示了两个数字。(我正在打印二进制树)
这是二进制搜索树的代码,并且在CodeBlocks中效果很好,但在Visual Studio
中效果不佳#include<iostream>
using namespace std;
struct node
{
int data;
int balance_factor;
node* left_linker;
node* right_linker;
};
struct binary_tree
{
node* root;
};
void init_tree(binary_tree& in_tree);
node* create_new_node(int data);
void insert_node(int in_data,binary_tree& in_tree);
node* insert_recursively(int in_data,node* in_root);
bool tree_empty(binary_tree& in_tree);
void print_tree_from_root(node* in_root);
int main(int argc,char* argv[])
{
binary_tree tree_1;
init_tree(tree_1);
insert_node(10,tree_1);
insert_node(30,tree_1);
insert_node(40,tree_1);
insert_node(20,tree_1);
insert_node(50,tree_1);
print_tree_from_root(tree_1.root);
}
void init_tree(binary_tree& in_tree)
{
in_tree.root = NULL;
}
node* create_new_node(int data)
{
node* temp = new node;
temp->data = data;
temp->left_linker = NULL;
temp->right_linker = NULL;
return temp;
}
void insert_node(int in_data,binary_tree& in_tree)
{
if(tree_empty(in_tree))
{
in_tree.root = create_new_node(in_data);
}
else
{
insert_recursively(in_data,in_tree.root);
}
}
node* insert_recursively(int in_data,node* in_root)
{
if(in_root == 0)
{
in_root = create_new_node(in_data);
return in_root;
}
else
{
if(in_data > in_root->data)
{
in_root->right_linker = insert_recursively(in_data,in_root->right_linker);
}
else if(in_data < in_root->data)
{
in_root->left_linker = insert_recursively(in_data,in_root->left_linker);
}
}
}
bool tree_empty(binary_tree& in_tree)
{
if(in_tree.root == 0)
return true;
return false;
}
void print_tree_from_root(node* in_root)
{
if(in_root == NULL)
{
return;
}
else
{
cout<<in_root->data<<endl;
print_tree_from_root(in_root->left_linker);
print_tree_from_root(in_root->right_linker);
}
}
insert_recursively
当它进入else
块时不会返回值,但是您将返回的值(垃圾)存储在right_linker
或left_linker
中。
请注意,编译器会发出相应的警告:
警告c4715:'insert_recursistifiely':并非所有控制路径返回值
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- Static_cast转换为错误的数据类型,但结果仍然正确?
- C++ 犰狳库中的sort_index()函数给出了错误的结果
- C++:使用类在向量中搜索特定元素时,我得到了错误的结果
- 检查 n2 是否是 n1 的倍数后结果错误,但根本没有错误
- 为什么我的性能基准给了我错误的结果?
- 使用具有默认参数的函数模板进行 decltype 会使结果混乱(一个有趣的问题或 gcc 的错误)
- 斐波那契检验(C++)的结果错误
- 在发布版本中划分两个双精度的结果错误
- 2D FFT后的图像结果错误
- 计算文本文件中的单个字母并打印结果 - 错误的输出 C++
- C++字符和 int 之间的转换,结果错误
- char*与std字符串的比较结果错误
- 斯波吉购物结果错误
- 超载"+"操作员,结果错误?
- 执行高斯消去程序时结果错误
- hash_djb2 PHP结果错误
- 按位操作比较结果错误
- 使用'if'语句和"<<"时的结果错误,'>>'运算符比较 3 个整数