Guest User

Untitled

a guest
Jan 18th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. struct Data
  2. {
  3. int a;
  4. };
  5.  
  6. struct List
  7. {
  8. Data d;
  9. List * next;
  10. };
  11.  
  12. // Рекурсия, инверсия списка
  13. List * reverse(List *u)
  14. {
  15. if (u == 0) return 0;
  16. if (u->next == 0) return u;
  17.  
  18. List * tmp = reverse(u->next);
  19.  
  20. u->next->next = u;
  21. u->next = 0;
  22. return tmp;
  23. }
  24.  
  25. // Находим значения списка
  26. bool Find_Item_Single_List(List * u, int DataItem)
  27. {
  28. List *ptr;
  29. ptr = u;
  30.  
  31. while (ptr != NULL)
  32. {
  33. if (DataItem == ptr->d.a) return true;
  34. else ptr = ptr->next;
  35. }
  36.  
  37. return false;
  38. }
  39.  
  40. int main(int argc, char** argv)
  41. {
  42. List *u = NULL;
  43.  
  44. // 1-й узел
  45. u = new List; // Объявление
  46. u->d.a = 3;
  47. u->next = NULL; // Указатель на следующий элемент
  48. // Для удобства создаем переменную-указатель, которая хранит адрес последнего элемента
  49. List *x;
  50.  
  51. // 2-й узел
  52. x = u;
  53. x->next = new List;
  54. x = x->next;
  55. x->d.a = 5;
  56. x->next = NULL;
  57. //
  58. List *c;
  59.  
  60. // 3-й узел
  61. c = x;
  62. c->next = new List;
  63. c = c->next;
  64. c->d.a = 1;
  65. c->next = NULL;
  66. //
  67. List *b;
  68.  
  69. // 4-й узел
  70. b = c;
  71. b->next = new List;
  72. b = b->next;
  73. b->d.a = 9;
  74. b->next = NULL;
  75.  
  76. // Вывод (просто идем по списку)
  77. while(u)
  78. {
  79. cout << u->d.a << endl;
  80. u = u->next;
  81. }
  82.  
  83. reverse(u);
  84.  
  85. return 0;
  86. }
Add Comment
Please, Sign In to add comment