Liste chainée à deux niveaux

Fermé
MEFTAH Messages postés 16 Date d'inscription mercredi 24 octobre 2001 Statut Membre Dernière intervention 3 mars 2023 - 28 mars 2015 à 23:56
 Utilisateur anonyme - 29 mars 2015 à 21:27
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.

3 réponses

Utilisateur anonyme
29 mars 2015 à 11:00
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 mercredi 24 octobre 2001 Statut Membre Dernière intervention 3 mars 2023
29 mars 2015 à 20:35
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
29 mars 2015 à 21:27
Je veux bien t'aider à corriger tes erreurs, mais pour ça, il faut avoir quelque chose à corriger. Je n'écrirai rien.
0