Liste chainée à deux niveaux

MEFTAH Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Salam tout le monde
je voudrai implémenter une liste chainée à deux niveaux en c++ et je rame un peu.
Le problème se présente comme suit :



Une liste simplement chainée qui contient :
  • le numéro étudiant
  • l'adresse d'une autre liste simpelment chainée qui contient le nom de l'étudiant (un caractère dans chaque élément de la liste)


je voudrais SVP une insertion en tête et une insetion en queue.
Et l'affichage du résultat
Merci davance.
# include <stdio.h>
# include <malloc.h>
# include <string.h>
struct bloc2
{
char xchar ;
struct bloc2 * suivant;
};

struct bloc1
{
int num;
struct bloc2 * nom;
struct bloc1 * suivant;
};
typedef struct bloc1 * bloc_etudiant;
typedef struct bloc2 * bloc_nom;

bloc_etudiant insert_num(bloc_etudiant a, int x)
{
bloc_etudiant b=(bloc_etudiant) malloc (sizeof(bloc_etudiant));
b->num=x;
b->suivant = a;
return b;
}

bloc_nom insert_name(bloc_nom a, char x)
{
bloc_nom b=(bloc_nom) malloc (sizeof(bloc_nom));
b->xchar=x;
b->suivant = a;
return b;
}

int main()
{
int i,j,x;

char str[26];
bloc_etudiant debut_num=NULL , initial_num ;
bloc_nom debut_name=NULL , initial_name ;

printf("Donner Le Numero Etudiant : "); scanf("%d",&x); debut_num=insert_num(debut_num,x);
printf("\n");
printf("Donner Le Nom De L'Etudiant : ");
scanf("%25s",str);
for( j= strlen(str); j >= 0; j--)
{
debut_name=insert_name(debut_name,str[j]);
}
debut_num->nom=debut_name;
printf("\n");
initial_num=debut_num;
while (initial_num!=NULL)
{
printf("%d",initial_num->num);
initial_name=initial_num->nom;
while (initial_name!=NULL)
{
printf("%d",initial_name->xchar);
initial_name=initial_name->suivant;
}
initial_num=initial_num->suivant;
}

printf("\n");

system("PAUSE");
}



Ce code n'affiche pas le nom correctement , je voudrai bien savoir pourcoi ?
Encore une fois MERCI D'AVANCE.
A voir également:

3 réponses

Utilisateur anonyme
 
Bonjour

Tu obtiens de nombres à la place des noms ? C'est parce que tu affiches tes caractères xchar comme des nombres décimaux (%d) au lieu de caractères (%c). Tu affiches leurs codes ASCII.
0
MEFTAH Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Que je suis bête, Je me suis creusé la tête 3 jours
et je ne sais pas comment ça a pu m'échaper.
Merci le père

SVP pouvez-vous m'aider a modifier un étudiant (num et nom) ?
Merci
0
Utilisateur anonyme
 
Je veux bien t'aider à corriger tes erreurs, mais pour ça, il faut avoir quelque chose à corriger. Je n'écrirai rien.
0