ChameL1oN

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

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