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 :

Suppression d'un élément d'une liste chainée


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 0
    Points
    0
    Par défaut Suppression d'un élément d'une liste chainée
    Salut svp je besoin d'un fonction qui peut liberer une case d'une liste chainée a une position donnée pour terminer mon project

  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Je voudrais bien t'aider, comme tu es "losing it" mais c'est contraire aux règles du forum: il faut que tu montres ce que tu as fait et quels problèmes tu rencontres...
    Bon courage

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 53
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par losing it Voir le message
    slt svp je besoin d'un fonction qui peut liberer une case d'une liste chainée a une position donnée pour terminer mon project
    CF ma reponse à ton precedent post loosing it .. :

    Citation Envoyé par nibors
    Bonjour,
    Il me semble que le forum n'est pas là pour faire ton travail a ta place...
    Tu commences le projet, tu poses des questions si tu bloques sur certaines chose mais en ce qui me concerne j'ai ici l'impression que tu n'as meme pas commencé a refflechir sur ce projet. Ou alors montre nous ton code qu'on puisse t'aider = )

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    En général, supprimer d'une liste chainée revient à connecter n-1 à n+1 (pointeurs suivant et précédent), puis à supprimer le n.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par nibors Voir le message
    CF ma reponse à ton precedent post loosing it .. :

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<process.h>
    #include<stdlib.h>
    #include<dos.h>
     
    typedef struct commande;
    struct commande
    {
    	char produit;
    	char client;
    	char email;
    	int qte ;
    	double prixU ;
    	struct commande *next;
    };
    typedef struct commande* List;
     
    char produit[50] = "";
    char client[50] = "";
    char email[50] = "";
    int qte = 0;
    double prixU = 0.0;
     
    FILE *fp, *ft;
    int i, n, ch, l, found;
     
    List ajouterElement(List list, char produit, char client, char email, int qte, float prixU)
    {
    	List llist = list;
    	List nouvelElement;
        nouvelElement = (List)malloc(sizeof(List));
    	nouvelElement->produit = produit;
    	nouvelElement->client = client;
    	nouvelElement->email = email;
    	nouvelElement->qte = qte;
    	nouvelElement->prixU = prixU;
    	nouvelElement->next = llist;
    	return nouvelElement;
    }
     
    void afficherListe(List list)
    {
    	List tmp = list;
    	while (tmp != NULL)
    	{
    		printf("\n  Produit : ");
    		printf("%s", tmp->produit);
    		printf("\n  Client : ");
    		printf("%s", tmp->client);
    		printf("\n  Email : ");
    		printf("%s", tmp->email);
    		printf("\n  Quantite : ");
    		printf("%d", tmp->qte);
    		printf("\n  Prix Unitaire : ");
    		printf("%.3lf", tmp->prixU);
    		tmp = tmp->next;
    		printf("\n");
    	}
    }
     
    int main()
    {
    	List list = NULL;
    	char buf[1000];
    	char buffer[50] = "C:\\Users\\asus\\Desktop\\projectC\\commandes.txt";
        char name;
        char produit[50];
        char client[50];
        char email[50];
        int qte;
        double prixU;
     
    	main:
    	system("cls");    /* ************ Menu ***********************  */
    	printf("\n\t\t==============================================\n\t\t // Gestion des commandes d'une entreprise //\n\t\t==============================================\n\n");
    	printf("\n  =======================\n\t>< MENU ><\n  =======================\n\n  [1] Ajouter une commande\n  [2] Afficher toutes les commandes\n  [3] Clients fideles\n  [0] Quitter\n\n  =======================\n\n");
    	printf("[+] Choisir une option > ");
    	scanf("%d", &ch);
    	switch (ch)
    	{
    	case 0:
    		printf("\n[?] Voulez vous quitter ?");
    		break;
    		/* ********************* Ajouter une commande************  */
    	case 1:
    		system("cls");
    		fp = fopen(buffer, "a");
    		for (;;)
    		{
    			fflush(stdin);
    			printf("\n[!] Pour quitter saisir un Espace puis Entrer\n");
    			printf("\n  =====================================================\n\t\t>< Ajout de commandes ><\n  =====================================================\n\n  Produit : ");
    			scanf("%[^\n]", &produit);
    			if (_stricmp(produit, "") == 0 || _stricmp(produit, " ") == 0)
    				break;
    			printf("  Client : ");
    			scanf("%s", &client);
    			printf("  Email Client : ");
    			gets(email);
    			printf("  Quantite : ");
    			scanf("%d", &qte);
    			printf("  Prix Unitaire : ");
    			scanf("%f", &prixU);
    			fprintf(fp, "\nProduit\t: %s\nClient\t: %s\nEmail\t: %s\nQuantite\t: %d\nPrix Unitaire\t: %.3lf\n", produit, client, email, qte, prixU);
    			system("cls");
    			list = ajouterElement(list, produit, client, email, qte, prixU);
     
    			//fwrite(&list, 1, sizeof(list), fp);
    		}
    		fclose(fp);
    		break;
    		/* ********************* List des commandes *************************  */
    	case 2:
    		system("cls");
    		printf("\n\t\t\t===========================\n\t\t\t // Liste des commandes //\n\t\t\t===========================\n\n");
    		if ((fp = fopen(buffer, "r")) == NULL)
    		{
    			printf("Liste de commandes vide !");
    			_getch();
    			goto main;
    		}
    		else {printf("\n\t\t\t===========================\n\t\t\t // Liste des commandes //\n\t\t\t===========================\n\n");
    		afficherListe(list);
    		}
    		break;
     
        case 3:
        default:
    		printf("Choix invalid !");
    		break;
    	}
    	printf("\n\n[+] Saisir votre choix:\t\t[1] Menu\t[0] Quitter\n");
    	printf(">_ ");
    	scanf("%d", &ch);
    	switch (ch)
    	{
    	case 1:
    		goto main;
    	case 0:
    		break;
    	default:
    		printf("Choix invalid !");
    		break;
    	}
    	return 0;
    }
    j'ai fait le travail bien une partie du project si vous voulez pas m'aider vous pouvez ignorer la discussion

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 53
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par losing it Voir le message
    j'ai fait le travail b1 une partie du project si vous voulez pas m'aider vous pouvez ignorer la discussion
    Ce n'est pas que je ne veux pas t'aider mais on ne doit pas venir sur le forum en disant "Je dois faire ca, faites le svp" mais plutot "Je dois faire ca, j'ai essayé ceci inserer code, cela ne fonctionne pas comme prevu parce que inserer comportement obtenu et comportement attendu, pourriez vous m'aider ?"

    Pour en revenir a ton code maintenant, je pense que tu peux faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // supprime l'element list->next
    void supprimerElem(List *list)
    {
       List *tmp = list->next->next;
       free(list->next);
       list->next = tmp;
    }
    A verifier ca fait un moment que je n'ai pas fais de C ^^

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    c'est trés proche de ce que je besoin je devrais just regler quelque details merci bien

  8. #8
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par losing it Voir le message
    c'est très proche de ce que je besoin je devrais juste régler quelque détails merci bien
    Pour la suppressions d'un pointeur il y a 3 étape a distinguer
    1. suppression dans liste vide
    2. suppression en tète de liste
    3. et en fin suppression dans le corps

    j'aimerais pas trop insister la dessus et que ton problème a été régler....mais si c'est pas le cas dit le et je montrerais comment sa se fait

Discussions similaires

  1. Suppression d'un élément dans une liste chainée
    Par jbarreau-mainson dans le forum Débuter
    Réponses: 1
    Dernier message: 06/05/2009, 15h49
  2. Réponses: 12
    Dernier message: 03/07/2008, 13h53
  3. Suppression d'un élément d'une list
    Par SimOOn dans le forum SL & STL
    Réponses: 15
    Dernier message: 16/01/2008, 21h18
  4. Supprimer le 1er élément d'une liste chainée
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 02/06/2007, 01h05
  5. Réponses: 8
    Dernier message: 01/04/2006, 10h10

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