Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.16 KB | None | 0 0
  1. typedef struct DoubleLinkedListElem {
  2.     int data;
  3.     struct DoubleLinkedListElem *previous;
  4.     struct DoubleLinkedListElem *next;
  5. } DoubleLinkedListElem;
  6. typedef struct DoubleLinkedList {
  7.     DoubleLinkedListElem *head;
  8.     int size;
  9.     DoubleLinkedListElem *tail;
  10. } DoubleLinkedList;
  11.  
  12. // création d'une nouvelle liste chaînée bilatère vide
  13. // cette fonction renvoie un pointeur sur la nouvelle structure liste chaînée bilatère vide
  14. DoubleLinkedList *newDoubleLinkedList();
  15. // instanciation (création) d'un élément (maillon) à insérer dans une liste chaînée bilatère
  16. // avec stockage de la donnée value dans l'élément de liste
  17. DoubleLinkedListElem *NewDoubleLinkedListItem(int value);
  18. // affichage des éléments d'une liste chaînée bilatère en commençant par la tête
  19. int DisplayDoubleList(DoubleLinkedList *list);
  20. // affichage des éléments d'une liste chaînée bilatère en commençant par la queue (Reverse)
  21. int RevDisplayDoubleList(DoubleLinkedList *list);
  22. // insertion d'un élément en queue de liste chaînée bilatère
  23. int insertItemAtDoubleLinkedListTail(DoubleLinkedList *list, DoubleLinkedListElem *newItem);
  24. // insertion d'un élément en tête de liste chaînée bilatère
  25. int insertItemAtDoubleLinkedListHead(DoubleLinkedList *list, DoubleLinkedListElem *newItem);
  26. // renvoie le nombre d'élément contenus dans la liste
  27. int getDoubleLinkedListSize(DoubleLinkedList *list);
  28. // insertion d'un élément après un autre élément
  29. int insertItemAfterItem(DoubleLinkedList *list, DoubleLinkedListElem *item, DoubleLinkedListElem *newItem);
  30. // insertion d'un élément avant un autre élément
  31. int insertItemBeforeItem(DoubleLinkedList *list, DoubleLinkedListElem *item, DoubleLinkedListElem *newItem);
  32. // destruction de tous les éléments d'une liste chaînée
  33. int emptyDoubleLinkedList(DoubleLinkedList *list);
  34. // suppression et destruction d'un élément de liste chainée
  35. int deleteDoubleLinkedListItem(DoubleLinkedList *list, DoubleLinkedListElem *item);
  36. // obtention d'un pointeur sur le prochain élément contenant "value", en partant de l'élément "item" et en
  37. // allant soit vers la tête (UP), soit vers la queue (DOWN)
  38. DoubleLinkedListElem * getNextDoubleLinkedListItem(DoubleLinkedList *list, DoubleLinkedListElem *item, int value, int sens);
  39. // déplacement d'un élément après un autre élément
  40. int moveDoubleLinkedListItemAfterItem(DoubleLinkedList *list, DoubleLinkedListElem *item, DoubleLinkedListElem *itemDest);
  41. // permutation de deux éléments de la liste chainée
  42. int swapDoubleLinkedListItem(DoubleLinkedList *list, DoubleLinkedListElem *itemA, DoubleLinkedListElem *itemB);
  43. // trier au mieux
  44. int sortDoubleLinkedList(DoubleLinkedList *list);
  45. // implémentation du tri bulles, pas très performant ...
  46. int sortBublesDoubleLinkedList(DoubleLinkedList *list);
  47. // modifie la valeur d'un élément
  48. int setValueOfDoubleLinkedListItem(DoubleLinkedList *list, DoubleLinkedListElem *item, int value);
  49. // obtient la valeur d'un élément
  50. int getValueOfDoubleLinkedListItem(DoubleLinkedList *list, DoubleLinkedListElem *item, int *value);
  51. // crée une nouvelle liste chaînée avec les éléments dont la valeur est comprise entre min et max
  52. DoubleLinkedList * extractRangedValueFromNewDoubleLinkedList(DoubleLinkedList *list, int Min, int Max);
  53. // clonage d'une liste chaînée (création d'une nouvelle liste qui contient la copie de tous les éléments)
  54. DoubleLinkedList *cloneDoubleLinkedList(DoubleLinkedList *list);
  55. // greffe d'une liste dans une autre liste à la suite de l'élément item,
  56. // à l'issue de l'opération la liste greffée n'existe plus
  57. int graftDoubleLinkedListAfterItem(DoubleLinkedList *list, DoubleLinkedListElem *item, DoubleLinkedList graftList);
  58. // fonctions qui manipulent la liste en utilisant l'index (no d'ordre dans la liste) des Items
  59. // renvoie EXIT_FAILURE ou NULL s'il n'y a pas d'élément en nième position
  60. // renvoie un pointeur sur le nième élément de la liste
  61. DoubleLinkedListElem *getItemAtIndexFromDoubleLinkedList(DoubleLinkedList *list, int index);
  62. // insère un nouvel élément contenant "value" en nième position,
  63. int insertItemAtIndexIntoLinkedList(DoubleLinkedList *list, int index, int value);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement