ChameL1oN

Жел_3

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