所以我前一段时间做了一些C编程,基本上忘记了所有大声笑但是无论如何我开始做这个“C Refresher”的东西,我在网上发现并且跟着这个二进制搜索树的例子有点松散而且遇到了错误。一旦我编译并运行它,它会显示“错误:无法打开显示”。我在学校的某个Linux服务器上运行此代码。无论如何,这是代码:
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
typedef struct Node {
int value;
struct Node *left;
struct Node *right;
} Node;
void add (Node *node, int value)
{
if (value < node->value) {
//left side
if (node->left == NULL) {
Node *newNode = malloc(sizeof(Node));
newNode->value = value;
newNode->left = NULL;
newNode->right = NULL;
node->left = newNode;
} else {
add(node->left, value);
}
} else {
//right side
if (node->right == NULL) {
Node *newNode = malloc(sizeof(Node));
newNode->value = value;
newNode->left = NULL;
newNode->right = NULL;
node->right = newNode;
} else {
add(node->right, value);
}
}
}
int search(Node *node, int value)
{
if (node == NULL) {
return FALSE;
} else if (node->value == value) {
return TRUE;
} else {
if (value < node->value) {
return search(node->left, value);
} else {
return search(node->right, value);
}
}
}
int main (int argc, char *argv[])
{
Node root;
root.value = 23;
root.left = NULL;
root.right = NULL;
add(&root, 5);
add(&root, 50);
add(&root, 8);
add(&root, 2);
add(&root, 34);
if (search(&root, 23)) {
printf("23 lives in the tree.\n");
} else {
printf("23 does not live in the tree.\n");
}
if (search(&root, 42)) {
printf("42 lives in the tree.\n");
} else {
printf("42 does not live in the tree.\n");
}
return 0;
}
代码可能看起来很长但实际上非常基本。我想我可以在粘贴它之前删除一些代码,但我想我会留下一切,以防我拿出一些对问题至关重要的东西。
另外我认为它可能与Node事物有关,所以在main
方法中我在printf("hi");
之前快速Node root;
看看是否会产生影响但是它仍然给了我同样的错误。我在这个学校服务器上的帐户上有另一个程序,该程序有一些printf
语句,运行得很好。
我尝试了谷歌搜索问题,但所有这些奇怪的Linux线程出现了,我无法理解它。我的计算机是Windows,但我在一个名为emacs的程序中完成了所有这些编码,我通过一个名为PuTTY的程序让我连接到学校的Linux服务器。
我也用gcc -o tree tree.c
编译了它。
对于所有的写作,我很抱歉,我只想尽可能多地提供信息。感谢任何能提供帮助的人!
答案 0 :(得分:1)
您是否像“./tree”或“树”一样调用它。看起来你正试图在ssh上运行一个gui应用程序。要查看哪个应用程序尝试使用“ssh -XY HOST”连接,如果您使用的是Linux计算机。然后你应该看到一个应用程序启动。