ChameL1oN

Лаба2_2(33 вар.)

Mar 29th, 2015
283
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. //Создать по типу стека.
  8. //Тип информационного поля int.
  9. //Удалить из списка первый элемент с четным информационным полем.
  10.  
  11.  
  12. struct point{
  13. int data;
  14. point* next;
  15. point* pred;
  16. };
  17.  
  18. void print_list(point* beg)
  19. //печать списка
  20. {
  21. point* p = beg;//начало списка
  22. while (p != 0)
  23. {
  24. cout << p->data << "\t";
  25. p = p->next;//переход к следующему элементу
  26. }
  27. }
  28.  
  29. void print_list2(point* beg)
  30. //печать списка
  31. {
  32. point* p = beg;//начало списка
  33. while (p->next != NULL){
  34. p = p->next;
  35. }
  36. while (p != 0)
  37. {
  38. cout << p->data << "\t";
  39. p = p->pred;//переход к следующему элементу
  40. }
  41. }
  42.  
  43. point* make_point()
  44. //создание одного элемента
  45. {
  46. point*p = new(point);
  47. p->next = 0; p->pred = 0;//обнуляем указатели
  48. cout << "Число ? ";
  49. cin >> p->data;
  50. return p;
  51. }
  52.  
  53.  
  54. point*make_list(int n)
  55. //создание списка
  56. {
  57. point *p, *beg;
  58. beg = make_point();//создаем первый элемент
  59. for (int i = 1; i<n; i++)
  60. {
  61. p = make_point();//создаем один элемент
  62. //добавление элемента в начало списка
  63. p->next = beg;//связываем р с первым элементом
  64. beg->pred = p;//связываем первый элемент с p
  65. beg = p;// p становится первым элементом списка
  66. }
  67. return beg;
  68. }
  69.  
  70.  
  71. point* del_point(point*beg)
  72. {
  73. point* p;
  74. point* r = new (point);
  75. bool boo = true;
  76. p = beg;
  77.  
  78. r->next = NULL;
  79. r->data = 0;
  80. while (p->next != NULL && boo){
  81. if (p->data % 2 == 0 && p->data != 0) { r = p; boo = false; }
  82. p = p->next;
  83. }
  84. if (r->data != 0){
  85. p = beg;
  86. while (p->next != r){
  87. p = p->next;
  88. }
  89. p->next = r->next;
  90. r->next->pred = r->pred; //связываем k+1 и k-1
  91. delete r;
  92. }
  93. return beg;
  94. }
  95.  
  96. void main(){
  97. setlocale(LC_ALL, "rus");
  98. int n, i = 0;
  99. cout << "Введите кол-во элементов" << endl;
  100. cin >> n;
  101. point* beg = make_list(n);
  102.  
  103. cout << "Исходный список : " << endl;
  104. print_list(beg);
  105. cout << endl;
  106. print_list2(beg);
  107. cout << endl;
  108. beg = del_point(beg);
  109. cout << endl;
  110. cout << endl;
  111. print_list(beg);
  112. cout << endl;
  113. print_list2(beg);
  114. cout << endl;
  115.  
  116. }
Advertisement
Add Comment
Please, Sign In to add comment