Так что я немного программировал на 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
, и она работает просто отлично.
Я пытался найти проблему в Google, но возникли все эти странные нити в Linux, и я не мог этого понять.Мой компьютер - Windows, но я все это кодировал в программе под названием emacs, которую я получил через программу PuTTY, которая позволяет мне подключаться к школьному серверу Linux.
Также я скомпилировал ее с gcc -o tree tree.c
.
Извините за все написанное, я просто пытался дать как можно больше информации.Спасибо всем, кто может помочь!