IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Inverser une file


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Par défaut Inverser une file
    Bonjour
    je veux ecrire une fonction
    qui inverser une file par exemple si ma file est A Z E R T Y ou tete =A et Queue = Y apres appel de la fonction permut() la file devient Y T R E Z A
    merci de tous ce que vous pouvez me dire algo programme lien idée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 87
    Par défaut
    Deja le prototype de la fonction m'etonne... Elle ne prend pas de file en parametre : je suppose que la file est declaree en global (les globals c'est mal )

    Ensuite vous pouvez faire une algo en recursif qui fasse genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    parcour(node)
    {
      if (node->next)
      {
        parcour(node->next)->next = node;
        return node->next;
      }
      else
        return node;
    }
    Il y a juste le probleme qu'il faut connaitre a l'avance la queue de la liste avant inversion, sinon vous perdrez votre liste dans la memoire.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Par défaut
    oui la file la tete et la queue sont defini d une maniére global
    pourqoui c mauvais excuse mon ignorance mais je suis novice en c
    Merci

  4. #4
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    L'utilisation de variables globale est à proscrire pour plusieurs raisons :

    - Accessibilité de tes variables partout dans le programme, donc modification possible par toute partie de ton programme (problème de sécurité)
    - Les variables globales sont crées au début de ton programme et détruites à la fin, ce qui peut poser des problèmes d'occupation mémoire. Il est plus fréquent d'avoir une variable dont on a besoin qu'une partie du temps de notre programme.
    - Mauvaise conception du programme le fait que tout soit global implique une mauvaise séparation des données (aucune séparation d'ailleurs)
    - Code non réutilisable car dépendant de tes variables globales.

    Le seul cas ou j'ai rencontré des cas ou on ne pouvait quasiment pas se passer de variables globales est le cas de la programmation système.
    Si on te dis qu'il es plus performant d'utiliser des variables globales, n'écoute pas ce qu'on te dis, personnellement j'attend encore preuve à l'appui cette affirmation.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 15
    Par défaut
    Oui vous avez raison en ce qui concerne les variables globals Merci c plus claire maintenenant ,
    et pour la file???

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ecnirp
    Oui vous avez raison en ce qui concerne les variables globals Merci c plus claire maintenenant ,
    et pour la file???
    C'est quoi une file pour toi ? Si c'est une liste chainée, ceci peut aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    #include <stdio.h>
     
    struct node
    {
       struct node *p_next;
       int data;
    };
     
    static void display(struct node *p)
    {
       if (p != NULL)
       {
          printf ("'%c' ", p->data);
          display(p->p_next);
       }
       else
       {
          printf ("NIL\n");
       }
    }
     
    static struct node *reverse(struct node *p)
    {
       struct node *p_rev = NULL;
     
       while (p != NULL)
       {
          struct node *p_next = p->p_next;
          if (p_rev == NULL)
          {
             p->p_next = NULL;
          }
          else
          {
             p->p_next = p_rev;
          }
          p_rev = p;
          p = p_next;
       }
       return p_rev;
    }
     
    int main ()
    {
       struct node a[] =
          {
             {
                a + 1, 'A'
             },
             {
                a + 2, 'Z'
             },
             {
                a + 3, 'E'
             },
             {
                a + 4, 'R'
             },
             {
                a + 5, 'T'
             },
             {
                NULL, 'Y'
             },
          };
       struct node *p = a;
     
       display(p);
       p = reverse(p);
       display(p);
       return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'A' 'Z' 'E' 'R' 'T' 'Y' NIL
    'Y' 'T' 'R' 'E' 'Z' 'A' NIL
    Press ENTER to continue.

Discussions similaires

  1. [Débutant] Inverser une chaîne de caractères
    Par zbooon dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 28/04/2017, 13h44
  2. Inverser les éléments d'une file (Queue<T>)
    Par F.Saad dans le forum C#
    Réponses: 3
    Dernier message: 18/10/2009, 19h09
  3. [AIDE] Inversion d'une File : Récursivité
    Par rirou dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 21/10/2007, 20h45
  4. [JSP] inverser une date
    Par logica dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 12/05/2005, 15h20
  5. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo