Advertisement
Guest User

func

a guest
Apr 19th, 2015
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  1. #include <types.h>
  2. #include <functions.h>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. void addToStart ( listNode * &list, listNode * PNew)
  8. {
  9. if(list == NULL){
  10. PNew->next = NULL;
  11. PNew->prev = NULL;
  12. list = PNew;
  13. cout << "Элемент был добавлен." << endl;
  14. return;
  15. }
  16. PNew->prev = NULL;
  17. list->prev = PNew;
  18. PNew->next = list;
  19. list = PNew;
  20. cout << "Элемент был добавлен." << endl;
  21. return;
  22. }
  23.  
  24. void addToEnd ( listNode *&list, listNode *PNew)
  25. {
  26. if(list == NULL){
  27. PNew->next = NULL;
  28. PNew->prev = NULL;
  29. list = PNew;
  30. cout << "Элемент был добавлен." << endl;
  31. return;
  32. }
  33. PNew->next = NULL;
  34. listNode *wp = list;
  35. listNode *prev = NULL;
  36. while(wp != NULL){
  37. prev = wp;
  38. wp = wp->next;
  39. }
  40. prev->next = PNew;
  41. PNew->prev = prev;
  42. cout << "Элемент был добавлен." << endl;
  43. return;
  44. }
  45.  
  46. void addToSort(listNode *&list, listNode *PNew)
  47. {
  48. PNew->next = NULL;
  49. PNew->prev = NULL;
  50.  
  51. if (list == NULL || PNew->number <= list->number)
  52. {
  53. PNew->next = list;
  54. if ( list != NULL )
  55. list->prev = PNew;
  56. list = PNew;
  57. return;
  58. }
  59.  
  60. listNode * wp = list->next;
  61. listNode * prev = list;
  62.  
  63. if ( wp != NULL)
  64. while (wp != NULL && wp->number < PNew->number)
  65. {
  66. prev = wp;
  67. wp = wp->next;
  68. }
  69.  
  70. prev->next = PNew;
  71. PNew->prev = prev;
  72. PNew->next = wp;
  73. if(wp != NULL && wp->next != NULL)
  74. wp->next->prev = PNew;
  75. }
  76.  
  77. void printList ( listNode *list )
  78. {
  79. if (list == NULL)
  80. {
  81. cout << " Список пустой! \n";
  82. return;
  83. }
  84. listNode *wp = list;
  85. while ( wp != NULL)
  86. {
  87. cout << wp->number << " ";
  88. wp = wp->next;
  89. }
  90. cout << endl << endl;
  91. }
  92.  
  93. void delFromSort ( listNode *&list, int num)
  94. {
  95. listNode *wp = list;
  96.  
  97. while (wp != NULL)
  98. {
  99. if (num != wp->number)
  100. {
  101. wp = wp->next;
  102. }
  103.  
  104. else
  105. {
  106. listNode *pDel = wp;
  107. if ( wp->prev != NULL )
  108. wp->prev->next = wp->next;
  109. else
  110. list = wp->next;
  111.  
  112. if ( wp->next != NULL )
  113. wp->next->prev = wp->prev;
  114. delete pDel;
  115. }
  116. }
  117. }
  118.  
  119. void delList ( listNode *&list )
  120. {
  121. listNode *wp = list;
  122.  
  123. while ( wp != NULL)
  124. {
  125. listNode *pDel = wp;
  126. wp = wp->next;
  127. delete pDel;
  128. }
  129. list = NULL;
  130. }
  131.  
  132. void specEl ( listNode *&list )
  133. {
  134. if (list == NULL || list->next == NULL )
  135. return;
  136.  
  137. listNode *prev1 = NULL;
  138. listNode *prev2 = NULL;
  139. listNode *wp = list;
  140. listNode *fol1 = NULL;
  141. listNode *fol2 = NULL;
  142. int sumNext = 0;
  143. int sumPrev = 0;
  144.  
  145.  
  146.  
  147. while ( wp )
  148. {
  149. prev1 = wp->prev;
  150. fol1 = wp->next;
  151.  
  152. if (prev1)
  153. prev2 = prev1->prev;
  154. else
  155. prev2 = NULL;
  156.  
  157. if (fol1)
  158. fol2 = fol1->next;
  159. else
  160. fol2 = NULL;
  161.  
  162. if (fol2)
  163. sumNext = fol1->number + fol2->number;
  164. else if (fol1)
  165. sumNext = fol1->number;
  166.  
  167. if (prev1 && prev2)
  168. sumPrev = prev1->number + prev2->number;
  169. else if (prev1)
  170. sumPrev = prev1->number;
  171.  
  172. if (sumNext > sumPrev)
  173. {
  174. cout << "Элемент, удовлетворяющий условия: " << wp->number << endl
  175. << "Cумма двух предыдущих элементов: " << sumPrev << endl;
  176. cout << "Cумма двух последующих элементов: " << sumNext << endl << endl;
  177. }
  178.  
  179. sumNext = 0;
  180. sumPrev = 0;
  181.  
  182. wp = wp->next;
  183. }
  184. }
  185.  
  186. void delEl (listNode *&list)
  187. {
  188. if (list == NULL)
  189. return;
  190.  
  191. listNode *wp = list;
  192.  
  193. while (wp->next != NULL)
  194. {
  195. if (wp->next->number %2 == 1)
  196. {
  197. listNode *pDel = wp;
  198. if ( wp->prev != NULL )
  199. wp->prev->next = wp->next;
  200. else
  201. list = wp->next;
  202.  
  203. if ( wp->next != NULL )
  204. wp->next->prev = wp->prev;
  205. delete pDel;
  206. }
  207. else
  208. wp = wp->next;
  209. }
  210.  
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement