Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec les files

please help

Sujet résolu
    27 octobre 2019 à 15:12:22

    mes files se comportent pas comme je le prévoit et je comprend pas pourquoi...

    la c'est mon main

    #include <stdio.h>
    #include "queue.h"
    
    int main(int argc, char const *argv[])
    {
    	Queue myQueue = newQueue();
    	myQueue = queue(myQueue, 41);
    	printf("taille de la file = %d\n", queueLen(myQueue));
    	printQueue(myQueue);
    	myQueue = queue(myQueue, 56);
    	myQueue = queue(myQueue, 25);
    	printf("taille de la file = %d\n", queueLen(myQueue));
    	printQueue(myQueue); 
    	myQueue = clearQueue(myQueue);
    	printf("taille de la file = %d\n", queueLen(myQueue));
    	printQueue(myQueue); 
    	return 0;
    }

     la c'est quelque fonction que je soupçonne:

    void printQueue(Queue qu)
    {
    	printf("je m'aprette a afficher la file\n");
    	if(isEmptyQueue(qu)==0)
    	{
    		printf("la file est vide\n");
    		return;
    	}
    
    	while(isEmptyQueue(qu)==1)
    	{
    		printf("[%d]\n", qu.first->value);
    		qu.first = qu.first->next;
    		printf("%d\n", isEmptyQueue(qu));
    		printf("je suis dans une boucle finit");
    	}
    	printf("je sort de l'affichage\n");
    }
    //------------------------------------------------------//
    Queue queue(Queue qu, int x)
    {
    	printf("%d\n", isEmptyQueue(qu));
    	queueElement *element;
    
    	element = malloc(sizeof(*element));
    	if(element == NULL)
    	{
    		fprintf(stderr, "mec, t'as pas de bol\n");
    		exit(EXIT_FAILURE);
    	}
    	element->value = x;
    	element->next = NULL;
    	if(isEmptyQueue(qu))
    	{
    		printf("je rajoute un element dans une que vide\n");
    		qu.first = element;
    		qu.last = element;
    		qu.size++;
    	}
    	else
    	{
    		printf("je rajoute un element\n");
    		printf("valeur de  qu.last->next avant reafectation = %s\n", qu.last->next);
    		printf("valeur de  qu.last avant reafectation = %d\n", qu.last);
    		qu.last->next = element;
    		qu.last = element;
    		printf("valeur de  qu.last->next apes reafectation = %s\n", qu.last->next);
    		printf("valeur de  qu.last apres reafectation = %d\n", qu.last);
    		qu.size++;
    	}	return qu;
    }

    et la c'est ma defiition de ma file:

    typedef struct queueElement
    {
    	int value;
    	struct queueElement *next;
    }queueElement;
    
    typedef struct Queue
    {
    	queueElement *first;
    	queueElement *last;
    	unsigned int size;
    }Queue;

    et au terminal j'ai ça :

    mon resultat sur le terminal


    -
    Edité par Machaonix 27 octobre 2019 à 15:25:21

    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2019 à 21:10:40

      On ne sait pas ce que fait newQueue(), mais ce qui m'étonne au premier abord, c'est que myQueue soit de type Queue et pas Queue*
      • Partager sur Facebook
      • Partager sur Twitter
        27 octobre 2019 à 23:18:06

        donc il faudrait que je fasse :

        typedef struct Queue
        {
            queueElement *first;
            queueElement *last;
            unsigned int size;
        }*Queue;

         et newQueue() fait

        newQueue(void)
        {
           Queue qu;
           qu.first= NULL;
           qu.last = NULL;
           qu.size = 0;
           return qu
        }





        • Partager sur Facebook
        • Partager sur Twitter
          28 octobre 2019 à 0:38:53

          Non, maintenant que je vois ta fonction, ton code de départ me semble correct.

          Il faudrait que tu donnes tout ton code de manière à pouvoir le tester.

          • Partager sur Facebook
          • Partager sur Twitter
            28 octobre 2019 à 1:31:10

            Ton test dans emptyQueue() n'est pas bon :
            	if(isEmptyQueue(qu)==0)
            


            Ca devrait plutôt être :

            	if(isEmptyQueue(qu)== TRUE)
            

            parce que vu ton énumération, 0 c'est FALSE

            • Partager sur Facebook
            • Partager sur Twitter
              28 octobre 2019 à 1:50:08

              c'est bon plus de problèmes. En tout cas merci beaucoup tu m'a bien aider :)

              -
              Edité par Machaonix 28 octobre 2019 à 2:56:25

              • Partager sur Facebook
              • Partager sur Twitter
                28 octobre 2019 à 10:49:51

                Tant mieux.

                Tu as du bien bosser car il restait encore des problèmes.

                • Partager sur Facebook
                • Partager sur Twitter

                Problème avec les files

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown