ChameL1oN

2трим_2лаб_2задач_Марина

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