Advertisement
Guest User

2.4.34

a guest
Apr 23rd, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct element{
  5. int key;
  6. element*next;
  7. element*prev;
  8. }*start = nullptr;
  9.  
  10. void list()
  11. {
  12. if (start){
  13. cout << "List: ";
  14. element *pointer = start;
  15. while (pointer){
  16. cout << pointer->key << "\t";
  17. pointer = pointer->next;
  18. }
  19. }
  20. else
  21. cout << "\nPrazen spisyk!!";
  22. }
  23.  
  24. void add_b(int n)
  25. {
  26. element * pointer = start;
  27. start = new element;
  28. start->key = n;
  29. start->prev = nullptr;
  30. start->next = pointer;
  31. if (pointer)
  32. pointer->prev = start;
  33. }
  34.  
  35. void add_e(int n)
  36. {
  37. element *q = new element;
  38. q->next = nullptr;
  39. q->key = n;
  40. if (start){
  41. element *pointer = start;
  42. while (pointer->next)
  43. pointer = pointer->next;
  44. pointer->next = q;
  45. q->prev = pointer;
  46. }
  47. else{
  48. start = q;
  49. q->prev = nullptr;
  50. }
  51. }
  52.  
  53. void add_bk(int n, int k)
  54. {
  55. element *p = start;
  56. while (p->key == k && p->next)
  57. p = p->next;
  58. if (p->key == k){
  59. element *q = new element;
  60. q->next = p->next;
  61. q->prev = p;
  62. if (p->next)
  63. p->next->prev = q;
  64. p->next = q;
  65. q->key = n;
  66. p->key = k;
  67. }
  68. else
  69. cout << "\nNqma kakvo da se izvede!!";
  70. }
  71.  
  72. void add_ak(int n, int k)
  73. {
  74. element *p = start;
  75. while (p->key == k && p->next)
  76. p = p->next;
  77. if (p->key == k){
  78. element *q = new element;
  79. q->next = p->next;
  80. q->prev = p;
  81. if (p->next)
  82. p->next->prev = q;
  83. p->next = q;
  84. q->key = k;
  85. p->key = n;
  86. }
  87. else
  88. cout << "\nNqma kakvo da se izvede!!";
  89. }
  90.  
  91. int del_k(int k)
  92. {
  93. if (start){
  94. element *p = start;
  95. while (p->key != k && p->next)
  96. p = p->next;
  97. if (p->key == k){
  98. if (start->key == k){
  99. start = start->next;
  100. if (start)
  101. start->prev = nullptr;
  102. }
  103. else{
  104. p->prev->next = p->next;
  105. if (p->next)
  106. p->next->prev = p->prev;
  107. }
  108. delete p;
  109. return 1;
  110. }
  111. else{
  112. cout << "\nNqma kakvo da se trie !";
  113. return 0;
  114. }
  115. }
  116. else{
  117. cout << "\nPrazen spisyk";
  118. return 0;
  119. }
  120. }
  121.  
  122. void invert()
  123. {
  124. element *p = start, *q;
  125. while (p){
  126. q = p->next;
  127. p->next = p->prev;
  128. p->prev = q;
  129. if (q == nullptr)
  130. start = p;
  131. p = q;
  132. }
  133. }
  134.  
  135. int main()
  136. {
  137. int izbor, n, k;
  138.  
  139. do{
  140. cout << "\n\nMENU" << endl;
  141. cout << "1- Add first" << endl;
  142. cout << "2- Add last" << endl;
  143. cout << "3- Add before" << endl;
  144. cout << "4- Add after" << endl;
  145. cout << "5- Del k" << endl;
  146. cout << "6- Invert" << endl;
  147. cout << "7- List" << endl;
  148. cout << "Izbor: ";
  149. cin >> izbor;
  150.  
  151. if (izbor < 5){
  152. cout << "\nNov element: ";
  153. cin >> n;
  154. }
  155. if (izbor >2 && izbor < 6){
  156. cout << "\n k= ";
  157. cin >> k;
  158. }
  159.  
  160. switch (izbor)
  161. {
  162. case 1:
  163. add_b(n);
  164. list();
  165. break;
  166. case 2:
  167. add_e(n);
  168. list();
  169. break;
  170. case 3:
  171. add_bk(n, k);
  172. list();
  173. break;
  174. case 4:
  175. add_ak(n, k);
  176. list();
  177. break;
  178. case 5:
  179. del_k(k);
  180. list();
  181. break;
  182. case 6:
  183. invert();
  184. list();
  185. break;
  186. case 7:
  187. list();
  188. break;
  189. }
  190. } while (izbor > 0 && izbor < 8);
  191.  
  192. return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement