Liste Chainée en C - Gérer une file d'attente

Fermé
Fleur224 - Modifié par Fleur224 le 26/11/2010 à 15:33
 jean-marie - 26 nov. 2010 à 16:36
Bonjour,

Je dois développer un petit programme en C en utilisant les listes chainées.
Le problème c'est que j'ai un peu de mal avec les listes chainées.
J'ai déjà consulté divers sites tels que le "Site du zéro", "developpez.com" en vain.
Le démarrage est plutôt difficile surtout lorsque j'essaye de créer le noeud pour "liste_t" et "file_t"

Voici le sujet : L'utilisateur demande un ticket, il saisit son nom et sa catégorie (Catégorie A, B ou C). Le système lui donne un numéro entre 1 et 50 en fonction de sa catégorie (A2, C5). Lorque le compteur dépasse 50, il revient à 1 sauf si la file est déjà pleine auquel cas il affiche que la file est pleine

Voilà l'ébauche,

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

// ======== Déclaration d'une liste chainée ======= //
typedef struct LISTE_T
{
int numero; // Numéro attribué par la machine
char* nom; // Nom saisi par l'utilisateur
struct LISTE_T *succ; // Liste des successeurs
}liste_t;


// ======== Structure pour manipuler la liste d'attente ======= //
typedef struct FILE_T
{
liste_t * debut;
liste_t * fin;
char cat; // Catégorie choisie par l'utilisateur
}file_t;



Les questions sont les suivantes :

1) Créer une fonction file_t* newfile(void) qui crée une file vide
2) Créer une fonction int add(file_t* f, char cat, char* nom) qui insère un élément en fin de file. Cette fonction devra prendre en compte l'attribution automatique d'un numéro par la machine en fonction de la catégorie. Si la liste est pleine elle renvoie 0 sinon elle renvoie la valeur 1.
3) Une fonction void affiche (file_t* f) qui affiche le contenu d'une file d'attente dans l'ordre de passage

Merci par avance,



A voir également:

1 réponse

Salut,

je ne suis pas un expert en liste chaînees mais il me semble que ton
int numero; // Numéro attribué par la machine
ne sert à rien

Le numéro est en fait la position de l'élément de la liste.

De meme dans FILE_T, tu n'a pas besoin d'un pointeur sur la fin. La fin de la liste, c'est quand un element de la liste pointe vers null

typedef struct LISTE_T
{
char* nom; // Nom saisi par l'utilisateur
struct LISTE_T *succ; // Liste des successeurs
}liste_t;

typedef struct FILE_T
{
liste_t * debut;
char cat; // Catégorie choisie par l'utilisateur
}file_t;

avec ca, un peu de courage et cet excelent tuto, tu devrais t'en sortir :
http://www.siteduzero.com/tutoriel-3-36245-les-listes-chainees.html#ss_part_3
-1