Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de pointeur warning type pointeur

j'arrive pas a execute ce programme comme il faut.

Sujet résolu
    15 septembre 2020 à 21:01:57

     bonjour, j'aimerais avoir quelques conseils pour ce code qui n'est pas fini, quand je lance le test ça marche mais ça donne pas le résultat attendu. Merci.

    #include <stdio.h>
    #include <stdlib.h>
    struct element
    {
    char x;
    struct element *suivant;
    };
    struct vertical
    {
       char *x; /*l'adresse de la tete de la premiere liste */
       struct vertical *suivant;  /*la tete du liste suivant */
    };
    struct informations
    {
        int *k; /* la position par rapport la liste vertical */
        int n; /* le nombre des elements de la liste */
    };
    /*-Définition du type element-*/
    typedef struct element element;
    /*-Définition du type liste-*/
    typedef element* liste;
    /* la fonction Souliste est une fonction boolean qui donne deux valeur true=1 et false=0 */
    int SousListe(liste L1, liste L2){
    
        liste* ptr1 = L1;
        liste* ptr2 = L2;
    
    	/* Si les deux listes sont null, on a l'inclusion donc on return true*/
    	if (L1 == NULL && L2 == NULL)
    		{return 1;}
    
    	/*Si non si L2 est Null donc soit on a la premiere cas lequelle on a deja traité (L1==Null) on return true sinon on return false */
    	if ( L1 == NULL ||
    		(L1 != NULL && L2 == NULL))
    		return 0;
    
    	/* on parcour la deuxieme liste element par element */
    	while (L2 != NULL)
    	{
    		/* Initialisation de ptr2 par l'element actual */
           element* ptr2 = L2;
    
    		/* commencont par chercher les element de L1 qu'on le trouve dans L2 */
    		while (L1 != NULL)
    		{
    		    element* ptr1=L1;
    			/* si on arrive a l2 null avant que on finis l1 donc on return false */
    			if (ptr2 == NULL){
    				return 0;}
    
               /* si on trouve le meme element on passe a l'element suivant pour les deux listes */
    			else if (ptr1->x == ptr2->x)
    			{
    				ptr1 = ptr1->suivant;
    				ptr2 = ptr2->suivant;
    			}
    
    			/* si on trouve pas l'egalité on arrete la recherche */
    			else break;
    		}
    
    		// Return true if first list gets traversed
    		// completely that means it is matched.
    		if (ptr1 == NULL){
    			return 1;}
    
    		// Initialize ptr1 with first again
    		element* ptr1 = L1;
    
    		// And go to next node of second list
    		L2 = L2->suivant;
    	}
    
    	return 0;
    }
    void Suppression(liste L){
        liste* ptr1 = L;
        if(L == NULL) {printf("L est deja null");}
    
        else {
            while(L != NULL){
            element* ptr1=L;
            L=L->suivant;
            ptr1->suivant=L->suivant;
            free(L);
            }
            /*quand j arrive a le dernier element qui sera ptr1=tete =>L=Null donc je sort et je liberer la tete */
            free(L);
    
        }
        return L;
    }
    void      afficherList(struct element *tete)
    {
               element   *p = tete;
                printf("Elements de la List \n");
                while(p != NULL)
                {
                     printf("%5s ", &p->x);
                     p = p->suivant;
                }
                printf("\n");
    }
    
    element      *creeListLiFo()
    {
                int i, N;
                element *p, *tete;
    do {
                          printf("Donner N nombre d'elements de la list ...\n");
                          scanf("%d", &N);
                     } while (N <= 0);
    
                tete = NULL;
                for (i = 0; i < N; i++)
                {
                     p = (element *)malloc(sizeof(element));
                     if (p == NULL)
                           return NULL;
    
                     printf("Donner %d eme valeur \n", i + 1);
                     scanf("%s", &p->x);
    
                      /* Ajouter la cellule en tete de liste */
                       /* Mettre le suivant du courant qui pointe vers le precedent element */
                      p->suivant = tete;
    
                        /* Mettre la tete comme etant le courant */
                        tete = p;
                   }
    
                   return tete;
    }
    
    int main()
    {
        element  *tete1, *tete2;
    
                tete1 = creeListLiFo();
                if (tete1 == NULL)
                   printf("Probleme creation de la liste ...\n");
                else
                   afficherList(tete1);
    
                system("pause");
    
                tete2 = creeListLiFo();
                if (tete2 == NULL)
                   printf("Probleme creation de la liste ...\n");
                else
                   afficherList(tete2);
    
                system("pause");
                if (SousListe(tete1,tete2)==1){
                    printf("tete1 est une sousliste de tete2");
    
                }
                else if(SousListe(tete1,tete2)==0) {printf("tete1 n'est pas une sous liste de tete2");}
    
        return 0;
    }
    
     

    -
    Edité par AbderrahimZaghdar 15 septembre 2020 à 23:56:24

    • Partager sur Facebook
    • Partager sur Twitter
      15 septembre 2020 à 21:54:24

      Bonjour,

      Manque de Politesse

      Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

      Manque de précisions

      Vous êtes ici sur un forum d'entraide communautaire et non pas sur un forum de demande de service, le but n'est donc pas de fournir une réponse toute faite ou de directement fournir la solution à quiconque viendrait sans la moindre trace. Afin d'obtenir de l'aide et une solution à votre problème, il est fortement recommandé de présenter clairement l'état actuel du problème en nous fournissant :

      • Un descriptif clair et précis du problème
      • La tentative actuelle de résolution que vous avez effectué
      • Le résultat attendu et le résultat actuel
      • Toutes pistes de recherches pouvant aider à la résolution

      Liens conseillés

      -
      Edité par AbcAbc6 15 septembre 2020 à 21:55:10

      • Partager sur Facebook
      • Partager sur Twitter

      probleme de pointeur warning type pointeur

      × 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