Advertisement
Baobab_Airline

Untitled

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