Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.70 KB | None | 0 0
  1. #include "6.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stdbool.h>
  5.  
  6. CalkDodat *newNode(unsigned int liczba)
  7. {
  8. CalkDodat *node=(CalkDodat*) malloc(sizeof(CalkDodat));
  9. node->next=NULL;
  10. node->prev=NULL;
  11. node->liczba=liczba;
  12. return node;
  13. }
  14.  
  15. CalkDodat *znajdzOgon(CalkDodat *lista)
  16. {
  17. while(lista->next)
  18. lista=lista->next;
  19. return lista;
  20. }
  21.  
  22. bool dodajnakoncu (CalkDodat *lista, unsigned int liczba)
  23. {
  24. CalkDodat *wsk, *nowy;
  25. wsk = lista;
  26. bool p=0;
  27. if (!wsk)
  28. {
  29. nowy =(CalkDodat*)malloc (sizeof(CalkDodat));
  30. nowy->prev = NULL;
  31. nowy->next = NULL;
  32. nowy->liczba=liczba;
  33. p=1;
  34. return p;
  35. }
  36. else
  37. {
  38. znajdzOgon(wsk);
  39. nowy =(CalkDodat*) malloc (sizeof(CalkDodat));
  40. nowy->liczba = liczba;
  41. nowy->next = NULL;
  42. nowy->prev=wsk;
  43. wsk->next = nowy;
  44. return p;
  45. }
  46. }
  47.  
  48. CalkDodat *znajdzGlowe(CalkDodat *lista)
  49. {
  50. while (lista->prev)
  51. lista = lista->prev;
  52.  
  53. return lista;
  54. }
  55.  
  56. bool znajdzPoArgumencie(unsigned int i, CalkDodat *head)
  57. {
  58. unsigned a=i;
  59. bool p=0;
  60. CalkDodat *wsk=znajdzGlowe(head);
  61. while(wsk->next)
  62. {
  63. if(wsk->liczba==a)
  64. {
  65. p = 1;
  66. }
  67. wsk=wsk->next;
  68. }
  69. return p;
  70. }
  71.  
  72. bool dodajZa (unsigned int liczba, CalkDodat *head, unsigned int i)
  73. {
  74. CalkDodat *wsk, *nowy;
  75. wsk =znajdzGlowe(head);
  76. unsigned int a=i;
  77. bool p=0;
  78. while(wsk)
  79. {
  80. if(wsk->liczba==a)
  81. {
  82. CalkDodat *nowy=newNode(a);
  83. CalkDodat *zlapNas=wsk->prev;
  84. if(zlapNas)
  85. {
  86. nowy->prev=wsk;
  87. nowy->next=zlapNas;
  88. wsk->next=nowy;
  89. zlapNas->prev=nowy;
  90. }
  91.  
  92. p=1;
  93. }
  94. wsk=wsk->next;
  95. }
  96. return p;
  97. }
  98.  
  99. bool dodajPrzed (unsigned int liczba, CalkDodat* head, unsigned int i)
  100. {
  101. CalkDodat *wsk, *nowy;
  102. wsk =znajdzGlowe(head);
  103. unsigned int a=i;
  104. bool p=0;
  105. while(wsk)
  106. {
  107. if(wsk->liczba==a)
  108. {
  109. CalkDodat *zlapPop=wsk->prev;
  110. nowy=newNode(a);
  111. if(zlapPop)
  112. {
  113. wsk->prev=nowy;
  114. nowy->next=wsk;
  115. nowy->prev=zlapPop;
  116. zlapPop->next=nowy;
  117. }
  118. else
  119. {
  120. wsk->prev=nowy;
  121. nowy->next=wsk;
  122. nowy->prev=NULL;
  123. }
  124. p= 1;
  125. }
  126. }
  127. return p;
  128. }
  129.  
  130. bool usunn(unsigned int i, CalkDodat *head)
  131. {
  132. unsigned a=i;
  133. CalkDodat *wsk=znajdzGlowe(head);
  134. bool p=0;
  135. while (wsk->next)
  136. {
  137. if (wsk->next->liczba == a)
  138. {
  139. CalkDodat *usuwany=wsk->next;
  140. wsk->next = usuwany->next;
  141. wsk=wsk->next;
  142. wsk->prev=wsk->prev->prev;
  143. free(usuwany);
  144. p=1;
  145. }
  146. else
  147. {
  148. wsk = wsk->next;
  149. }
  150. }
  151. return p;
  152. }
  153.  
  154.  
  155. void wyswietlListe(CalkDodat *lista)
  156. {
  157. CalkDodat *wsk=znajdzGlowe(lista);
  158. while(wsk)
  159. {
  160. printf ("%u\n", wsk->liczba);
  161. wsk = wsk->next;
  162. }
  163. }
  164.  
  165. void wyczyscListe(CalkDodat *lista)
  166. {
  167. CalkDodat *head=znajdzGlowe(lista);
  168. lista = head->next;
  169. while(lista)
  170. {
  171. free(head);
  172. head=lista;
  173. lista=lista->next;
  174. }
  175. }
  176.  
  177. CalkDodat *znajdz(unsigned int i, CalkDodat *list)
  178. {
  179. unsigned a=i;
  180. CalkDodat *wsk=list;
  181.  
  182. while(wsk)
  183. {
  184. if(wsk->liczba==a)
  185. {
  186. return wsk;
  187. }
  188. wsk=wsk->next;
  189. }
  190. return NULL;
  191. }
  192.  
  193. CalkDodat *zamienMiejscami(CalkDodat *lista, unsigned int parametr1, unsigned int parametr2)
  194. {
  195. unsigned q=parametr1;
  196. unsigned r=parametr2;
  197. CalkDodat *list=lista;
  198. znajdzGlowe(list);
  199. CalkDodat* obec1 = znajdz(q, list);
  200. CalkDodat* obec2 = znajdz(r, list);
  201.  
  202. while(obec1!=NULL && obec2!=NULL)
  203. {
  204. CalkDodat *par1p=obec1->prev;
  205. CalkDodat *par1n=obec1->next;
  206. CalkDodat *par2p=obec2->prev;
  207. CalkDodat *par2n=obec2->next;
  208. if(par1p)
  209. obec2->prev=par1p;
  210. else
  211. obec2->prev=NULL;
  212. if(par1n)
  213. obec2->next=par1n;
  214. else
  215. obec2->next=NULL;
  216. if(par2p)
  217. obec1->prev=par2p;
  218. else
  219. obec1->prev=NULL;
  220. if(par2n)
  221. obec1->next=par2n;
  222. else
  223. obec1->next=NULL;
  224. CalkDodat* obec1 = znajdz(q, list);
  225. CalkDodat* obec2 = znajdz(r, list);
  226. }
  227. return list;
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement