Advertisement
Guest User

Untitled

a guest
Sep 24th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.79 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include "liste.h"
  4.  
  5. using namespace std;
  6.  
  7.  
  8. /****************************************/
  9. /* Objectif : Constructeur d'un maillon contenant un entier.
  10. /* Entrées : entier x
  11. /* Sorties :
  12. /* Complexité : 0(1)
  13. /****************************************/
  14. maillon::maillon(int x)
  15. {
  16. val = x;
  17. succ = pred = NULL;
  18. }
  19.  
  20.  
  21. /****************************************/
  22. /* Objectif : Destructeur d'un maillon et de ses successeurs
  23. /* Entrées :
  24. /* Sorties :
  25. /* Complexité : 0(1)
  26. /****************************************/
  27. maillon::~maillon()
  28. {
  29. if (succ)
  30. {
  31. delete (succ);
  32. }
  33. }
  34.  
  35. /****************************************/
  36. /* Objectif : Affichage du contenu d'un maillon.
  37. /* Entrées :
  38. /* Sorties :
  39. /* Complexité : 0(n) où n est la taille de liste.
  40. de maillons dont le premier élément est l'objet appelant.
  41. /****************************************/
  42. void maillon::affichage()
  43. {
  44. cout<<this->val;
  45. }
  46.  
  47. /****************************************/
  48. /* Objectif : Constructeur d'une liste doublement
  49. chaînées d'entiers.
  50. /* Entrées :
  51. /* Sorties :
  52. /* Complexité : 0(1)
  53. /****************************************/
  54. liste::liste()
  55. {
  56. tete = queue = NULL;
  57. }
  58.  
  59.  
  60. /****************************************/
  61. /* Objectif : Destructeur d'une liste
  62. /* Entrées :
  63. /* Sorties :
  64. /* Complexité : 0(1)
  65. /****************************************/
  66. liste::~liste()
  67. {
  68. if (tete)
  69. {
  70. delete (tete);
  71. }
  72. }
  73.  
  74. /****************************************/
  75. /* Objectif : Test de vacuité
  76. /* Entrées :
  77. /* Sorties : booléan : vrai si la liste est vide
  78. et faux sinon.
  79. /* Complexité : 0(1)
  80. /****************************************/
  81. bool liste::vide()
  82. {
  83. if (tete == NULL)
  84. {
  85. return true;
  86. }
  87. return(false);
  88. }
  89.  
  90. /****************************************/
  91. /* Objectif : Insertion en tête d'un maillon
  92. x supposé non nul.
  93. /* Entrées : Pointeur sur le maillon à insérer.
  94. /* Sorties :
  95. /* Complexité : 0(1)
  96. /****************************************/
  97. void liste::insertionEnTete(maillon *x)
  98. {
  99. x->succ= tete;
  100. if (!vide())
  101. {
  102. tete->pred = x;
  103. x->succ = tete;
  104. tete = x;
  105. }
  106. else {
  107. tete = queue = x;
  108. }
  109. }
  110.  
  111. /****************************************/
  112. /* Objectif : Insertion en queue d'un maillon
  113. x supposé non nul
  114. /* Entrées : Pointeur sur le maillon à insérer.
  115. /* Sorties :
  116. /* Complexité : 0(1)
  117. /****************************************/
  118. void liste::insertionEnQueue(maillon *x)
  119. {
  120. if (vide())
  121. {
  122. tete = queue = x;
  123. }
  124. else
  125. {
  126. queue->succ = x;
  127. x->pred = queue;
  128. queue = x;
  129. }
  130. }
  131.  
  132.  
  133. /****************************************/
  134. /* Objectif : Insertion d'un maillon x dans une liste
  135. supposée triée. x est supposé non nul.
  136. /* Entrées : Pointeur sur le maillon à insérer.
  137. /* Sorties :
  138. /* Complexité : 0(n)
  139. /****************************************/
  140. void liste::insertionTri(maillon *x)
  141. {
  142. maillon * ptr = tete;
  143. if (vide())
  144. {
  145. tete = queue = x;
  146. }
  147. else
  148. {
  149. if (tete->val >= x->val)
  150. {
  151. insertionEnTete(x);
  152. }
  153. else if (queue -> val <= x->val)
  154. {
  155. insertionEnQueue(x);
  156. }
  157. else
  158. {
  159. while (ptr->val < x->val && ptr->succ != NULL)
  160. {
  161. ptr = ptr->succ;
  162. }
  163. maillon * tmp = ptr->pred;
  164. tmp->succ = x;
  165. x->pred = tmp;
  166. x->succ = ptr;
  167. ptr->pred = x;
  168. }
  169. }
  170. }
  171.  
  172.  
  173. /****************************************/
  174. /* Objectif : affichage du contenu de la liste
  175. /* Entrées :
  176. /* Sorties :
  177. /* Complexité : 0(n) où n est le nombre de maillons
  178. de la liste.
  179. /****************************************/
  180. void liste::affichage()
  181. {
  182. maillon *tmp = tete;
  183. while ( tmp != NULL)
  184. {
  185. if ( tmp->succ != NULL)
  186. {
  187. cout<<tmp->val<< " -> ";
  188. }
  189. else
  190. {
  191. cout<<tmp->val;
  192. }
  193. tmp = tmp->succ;
  194. }
  195. cout<<endl;
  196. }
  197.  
  198. /****************************************/
  199. /* Objectif : Accès à l'attribut privé tete
  200. /* Entrées :
  201. /* Sorties : tete
  202. /* Complexité : 0(1)
  203. /****************************************/
  204. maillon *liste::debut()
  205. {
  206. return tete;
  207. }
  208.  
  209. /****************************************/
  210. /* Objectif : Accès à l'attribut privé queue
  211. /* Entrées :
  212. /* Sorties : tete
  213. /* Complexité : 0(1)
  214. /****************************************/
  215. maillon *liste::fin()
  216. {
  217. return queue;
  218. }
  219.  
  220.  
  221. /****************************************/
  222. /* Objectif : Redirige la tete de liste vers
  223. /* l'adresse x donnée en argument
  224. /* Entrées : adresse d'un maillon
  225. /* Sorties :
  226. /* Complexité : 0(1)
  227. /****************************************/
  228. void liste::redirige_debut_vers(maillon* x)
  229. {
  230. maillon *tmp = tete->succ;
  231. maillon *tmp2 = x->pred;
  232. tete = x;
  233. x->pred = NULL;
  234. if(tmp == x){
  235. delete(tmp->pred);
  236. }
  237. else{
  238. while (tmp != tmp2){
  239. delete(tmp->pred);
  240. tmp = tmp->succ;
  241. }
  242. delete(tmp);
  243. }
  244. }
  245.  
  246.  
  247. /****************************************/
  248. /* Objectif : Redirige la fin de liste vers
  249. /* l'adresse x donnée en argument
  250. /* Entrées : adresse d'un maillon
  251. /* Sorties :
  252. /* Complexité : 0(1)
  253. /****************************************/
  254. void liste::redirige_fin_vers(maillon* x)
  255. {
  256. maillon *tmp = queue->pred;
  257. maillon *tmp2 = x->succ;
  258. queue = x;
  259. x->succ = NULL;
  260. if(tmp == x){
  261. delete(tmp->succ);
  262. }
  263. else{
  264. while (tmp != tmp2){
  265. delete(tmp->succ);
  266. tmp = tmp->pred;
  267. }
  268. delete(tmp);
  269. }
  270. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement