Я получаю сообщение об ошибке «Не удается открыть отображение» в этом очень простом коде C, но я не понимаю, почему - PullRequest
0 голосов
/ 17 февраля 2012

Так что я немного программировал на 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.

Извините за все написанное, я просто пытался дать как можно больше информации.Спасибо всем, кто может помочь!

1 Ответ

1 голос
/ 17 февраля 2012

Вы вызываете это как "./tree" или просто "дерево". Похоже, вы пытаетесь запустить приложение с графическим интерфейсом поверх SSH. Чтобы увидеть, какое приложение попробуйте подключиться с помощью «ssh -XY HOST», если вы работаете на машине с Linux. Тогда вы должны увидеть запуск приложения.

...