Rechercher : dans
Par :

Arbre en c

Dernière réponse le 12 jan 2009 à 19:32:40 oscar, le 6 avr 2005 à 11:07:31 
 Signaler ce message aux modérateurs

Bonjour

j'ai des problèmes pour codifier un arbre binaire en c (pacours infixé post fixé prefixé; aidez moi svp
merci.

Configuration: programmation

Meilleures réponses pour « arbre en c » dans :
[Langage C] C/C++ Erreur de segmentation VoirQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux...
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Compiler du C sous Linux/UNIX VoirSous Linux, le compilateur de C est gcc. Il est installé de base sur plusieurs distributions, mais sur Debian (et celles qui en découlent) il faudra l'installer (aptitude install gcc). gcc Syntaxe de GCC gcc Tout d'abord, il faut savoir...
Télécharger Visual C++ Express VoirVisual C++ Express est une version "gratuite" et allégée de Visual Studio ; l'utilisation requiert l'inscription sur le site de Microsoft. Cet environnement de développement permet de créer des application Win32 ou du .NET C.
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

kij, le 6 avr 2005 à 11:18:42

Je peux te filer des fonction pour les parcours d'arbre et compagnie mais faut attendre demain...

Répondre à kij

2

COC.C, le 25 mai 2008 à 17:42:22

BON TU VEUX DES FONCTIONS EN RECURSIF?

Répondre à COC.C

4

gdavis, le 7 jun 2008 à 19:53:25

Bsoir COC.C

Tu sais, je suis un débutant en C.
Ainsi, il me faut quelque chose qui marche bien pour me permettre de comprendre les contours de cet environnement également.

Des fonctions récursives ne me gêneront pas.

L'optimisation viendra après.

Bne soiréé

Répondre à gdavis

3

lami20j, le 25 mai 2008 à 17:59:58
  • +3

Salut,

voici un exemple (à toi d'adapter)

#include<stdio.h>
#include<stdlib.h>

typedef struct N_
{
  int nb;
  struct N_*gauche;
  struct N_*droite;
} Noeud;

void CreerArbre (Noeud ** racine, int n);
void Traiter (Noeud * racine);
void AfficherPrefixe (Noeud * racine);
void AfficherPostfixe (Noeud * racine);
void AfficherInfixe (Noeud * racine);

Noeud *alloc ();

int main ()
{
  Noeud *racine;

  racine = NULL;
  int n;

  printf ("Numéro [100 pour terminer] ? ");
  scanf ("%d", &n);
  while (n != 100) {
    CreerArbre (&racine, n);
    printf ("Numéro [100 pour terminer] ? ");
    scanf ("%d", &n);
  }
  AfficherPrefixe (racine);
  puts ("");
  AfficherInfixe (racine);
  puts ("");
  AfficherPostfixe (racine);
  puts ("");
  return 0;
}

void CreerArbre (Noeud ** racine, int n)
{
  Noeud *nouveau;

  nouveau = alloc ();

  if (*racine == NULL) {
    nouveau->nb = n;
    nouveau->gauche = NULL;
    nouveau->droite = NULL;
    *racine = nouveau;
  }
  else if (n < (*racine)->nb)
    CreerArbre (&(*racine)->gauche, n);
  else if (n > (*racine)->nb)
    CreerArbre (&(*racine)->droite, n);
}


Noeud *alloc ()
{
  Noeud *noeud;

  noeud = (Noeud *) malloc (sizeof (Noeud));
  return noeud;
}

void Traiter (Noeud * racine)
{
  printf ("%d (%p) ; ", racine->nb, racine);
}

void AfficherPrefixe (Noeud * racine)
{
  if (racine != NULL) {
    Traiter (racine);
    AfficherPrefixe (racine->gauche);
    AfficherPrefixe (racine->droite);
  }
}
void AfficherPostfixe (Noeud * racine)
{
  if (racine != NULL) {
    AfficherPostfixe (racine->gauche);
    AfficherPostfixe (racine->droite);
    Traiter (racine);
  }
}


void AfficherInfixe (Noeud * racine)
{
  if (racine != NULL) {
    AfficherInfixe (racine->gauche);
    Traiter (racine);
    AfficherInfixe (racine->droite);
  }
}
106485010510997108

Répondre à lami20j

5

gdavis, le 7 jun 2008 à 21:24:56

Merci lami20j,
C'est génial.

Cpdant, j'ai écris un truc qui me coince à tout moment avec des erreur.

Donc je veux un qui marche sans error, afin de bien comprendre les contours de C.

Je rappelle mon 1er prob:


Un programme C qui me permet de retrouver la représentation fonctionnelle d'un arbre abstrait:
1- à partir de sa représentation préfixée d'une part,
2 - et de sa représentation postfixée d'autre part,
3 - en fin de sa représentation infixée.

Bonne soirée

Répondre à gdavis

6

gdavis, le 9 jun 2008 à 16:56:24

Bonsoir

Qu'est ce qui fait la différence entre un code écrit en c sous windows et le même code en c sous linux?

Répondre à gdavis

7

Titi, le 10 nov 2008 à 16:07:28

Y'en a pas

Bon courage

Répondre à Titi

8

 kcmo31, le 12 jan 2009 à 19:32:40

Bonjour , j'utilise les outil lex et yacc pour concevoir une grammaire connue , j'ai besoin d'une méthode pour le parcour d'un arbre n-aire au niveau de yacc ( méthode écrite en C )
merci

Répondre à kcmo31