Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- struct noeud {
- int donnees;
- int id;
- struct noeud *suivant;
- };
- struct noeud *entree = NULL;
- struct noeud *curseur = NULL;
- void afficherListe() {
- struct noeud *ptr = entree;
- printf("\n[ ");
- while(ptr != NULL) {
- printf("(%d,%d) ",ptr->id,ptr->donnees);
- ptr = ptr->suivant;
- }
- printf(" ]");
- }
- void insererPremier(int id, int donnees) {
- struct noeud *lien = (struct noeud*) malloc(sizeof(struct noeud));
- lien->id = id;
- lien->donnees = donnees;
- lien->suivant = entree;
- entree = lien;
- }
- struct noeud* supprimerPremier() {
- struct noeud *tempLink = entree;
- entree = entree->suivant;
- return tempLink;
- }
- int taille() {
- int taille = 0;
- struct noeud *curseur;
- for(curseur = entree; curseur != NULL; curseur = curseur->suivant) {
- taille++;
- }
- return taille;
- }
- struct noeud* trouver(int id) {
- struct noeud* curseur = entree;
- if(entree == NULL) {
- return NULL;
- }
- while(curseur->id != id) {
- if(curseur->suivant == NULL) {
- return NULL;
- } else {
- curseur = curseur->suivant;
- }
- }
- return curseur;
- }
- struct noeud* supprimer(int id) {
- struct noeud* curseur = entree;
- struct noeud* previous = NULL;
- if(entree == NULL) {
- return NULL;
- }
- while(curseur->id != id) {
- if(curseur->suivant == NULL) {
- return NULL;
- } else {
- previous = curseur;
- curseur = curseur->suivant;
- }
- }
- if(curseur == entree) {
- entree = entree->suivant;
- } else {
- previous->suivant = curseur->suivant;
- }
- return curseur;
- }
- struct noeud* vider() {
- while(entree != NULL)
- {
- struct noeud *temp = supprimerPremier();
- printf("\nValeur supprimee : ");
- printf("(%d,%d) ",temp->id,temp->donnees);
- }
- }
- void trier() {
- int i, j, k, tempKey, tempData;
- struct noeud *curseur;
- struct noeud *suivant;
- int size = taille();
- k = size ;
- for (i = 0 ; i < size - 1 ; i++, k--) {
- curseur = entree;
- suivant = entree->suivant;
- for (j = 1 ; j < k ; j++) {
- if (curseur->donnees > suivant->donnees) {
- tempData = curseur->donnees;
- curseur->donnees = suivant->donnees;
- suivant->donnees = tempData;
- tempKey = curseur->id;
- curseur->id = suivant->id;
- suivant->id = tempKey;
- }
- curseur = curseur->suivant;
- suivant = suivant->suivant;
- }
- }
- }
- void inverser(struct noeud** entree_ref) {
- struct noeud* prev = NULL;
- struct noeud* curseur = *entree_ref;
- struct noeud* suivant;
- while (curseur != NULL) {
- suivant = curseur->suivant;
- curseur->suivant = prev;
- prev = curseur;
- curseur = suivant;
- }
- *entree_ref = prev;
- }
- void main() {
- insererPremier(1,10);
- insererPremier(2,20);
- insererPremier(3,30);
- insererPremier(4,1);
- insererPremier(5,40);
- insererPremier(6,56);
- printf("Liste originelle : ");
- afficherListe();
- vider();
- printf("\nListe apres avoir supprime tous les elements : ");
- afficherListe();
- insererPremier(1,10);
- insererPremier(2,20);
- insererPremier(3,30);
- insererPremier(4,1);
- insererPremier(5,40);
- insererPremier(6,56);
- printf("\nListe restoree : ");
- afficherListe();
- printf("\n");
- struct noeud *foundLink = trouver(4);
- if(foundLink != NULL) {
- printf("Element trouve : ");
- printf("(%d,%d) ",foundLink->id,foundLink->donnees);
- printf("\n");
- } else {
- printf("Element pas trouve.");
- }
- supprimer(4);
- printf("Liste apres avoir supprimer un element : ");
- afficherListe();
- printf("\n");
- foundLink = trouver(4);
- if(foundLink != NULL) {
- printf("Element trouve : ");
- printf("(%d,%d) ",foundLink->id,foundLink->donnees);
- printf("\n");
- } else {
- printf("Element pas trouve.");
- }
- printf("\n");
- trier();
- printf("Liste apres tri des donnees: ");
- afficherListe();
- inverser(&entree);
- printf("\nListe apres inversion : ");
- afficherListe();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement