[C - listes chainées] Votre avis sur ce code...

Votre avis sur ce code... [C - listes chainées] - Programmation

Marsh Posté le 17-02-2002 à 18:46:04    

Est ce que sa vous semble correcte ? Ya t'il pas mieux à faire ?
Merci
 
typedef struct cellule
{
 void *info;
 char codeinfo;
 struct cellule *suivant;
} CELL;
 
 
CELL *Creation_Cellule(void *info, int code)
{
 CELL *pcell=(CELL *) malloc(sizeof(CELL));
 if (!pcell)
  pb_mem();
 else
 {
  pcell->codeinfo=code;
  pcell->info=info;
  pcell->suivant=NULL;
 }
 return pcell;
}
 
 
void Empilage (CELL **ptete, CELL *nouv)
{
 // les nouveaux s'insèrent en tête
 if (*ptete == NULL)
 {
  *ptete=nouv;
 }
 else
 {
  nouv->suivant=*ptete;
  *ptete=nouv;
 }
}
 
CELL* Depilage (CELL **ptete)
{
 //On enlève le dernier arrivé
 CELL *ptr=*ptete;
 if (*ptete)
  *ptete= (*ptete)->suivant;
 return ptr;
}

 

[jfdsdjhfuetppo]--Message édité par vincedetroy--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 17-02-2002 à 18:46:04   

Reply

Marsh Posté le 17-02-2002 à 20:15:12    

Il faudrait que tu nous dises le but exact de l?exercice parce que sinon on peut pas te dire si on peut faire mieux !!!
 
Par contre j?ai un TP avec un DEQUE :
 
 
#include <stdio.h>
#include<stdlib.h>
 
 
typedef struct chain_deque
{
 struct chain_deque *precedent;
 int entier;
 struct chain_deque *suivant;
} chainon;
 
 
 
typedef struct deque
{
 struct chain_deque *tete;
 struct chain_deque *queue;
} ptr;
 
 
 
void ajoute_tete(struct deque* d,int nombre)
{
 struct chain_deque* ptr_c;
 
 ptr_c=(chainon*)malloc(sizeof(chainon));
 
 
 if (d->tete!=NULL)
 {
  d->tete->precedent=ptr_c;
 }
 
 
 if (d->queue==NULL)
 {
  d->queue=ptr_c;
 }
 
 ptr_c->entier=nombre;
 ptr_c->precedent=NULL;
 ptr_c->suivant=d->tete;
 
 d->tete=ptr_c;
 
}
 
 
 
 
void ajoute_queue(struct deque* d,int nombre)
{
 
 struct chain_deque* ptr_c;
 
 ptr_c=(chainon*)malloc(sizeof(chainon));
 
 if (d->queue!=NULL)
 {
  d->queue->suivant=ptr_c;
 }
 
 if (d->tete==NULL)
 {
  d->tete=ptr_c;
 }
 
 ptr_c->entier=nombre;
 ptr_c->precedent=d->queue;
 ptr_c->suivant=NULL;
 
 d->queue=ptr_c;
 
}
 
 
 
 
void supprim_tete(struct deque* d)
{
 
 struct chain_deque* ptr_c;
 
 ptr_c=d->tete
 d->tete=d->tete->suivant;
 
 free(ptr_c);
 
 
}

Reply

Marsh Posté le 17-02-2002 à 20:18:04    

Il est pas mal ton code vincedetroy

Reply

Marsh Posté le 17-02-2002 à 21:19:07    

Ben si c'est pour faire une liste chainée sans but précis, moi je rajouterais un pointeur vers l'élement précédent...Ca peut toujours servir...

Reply

Marsh Posté le 17-02-2002 à 21:33:29    

en fait le but c'est de crée une pile representant une expression parenthésé puis de calculer l'expression...
 
et en fait j'y arrive pas  :cry:


---------------
Certaines choses s'oublient, et d'autres pas...
Reply

Marsh Posté le 17-02-2002 à 23:47:23    

tu as fait une jolie liste , mais pourquoi ?
tu as dit que tu avais besoin d'une pile , non ?
le plus simple pour la pile c ca :
 typedef struct{
     int sommet;
     Element *tab=NULL;
     int taille=0;
}Pile;


---------------

Reply

Marsh Posté le 18-02-2002 à 00:16:37    

flo850 a écrit a écrit :

 typedef struct{
     int sommet;
     Element *tab=NULL;
     int taille=0;
}Pile;



C'est clair que les listes chaînées, ça va 5 minutes, et un bon gros tableau est souvent plus clair.
N'oublie pas de réallouer la taille par gros morceaux, pas à chaque fois.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed