Advertisement
Uncleeee

Lab1_OS

Sep 13th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct list
  6. {
  7. int field; // поле данных
  8. struct list *ptr; // указатель на следующий элемент
  9. };
  10.  
  11. struct list * init(int a) // а - значение первого узла, функция назначения первого узла списка
  12. {
  13. struct list *lst;
  14. // выделение памяти под корень списка
  15. lst = (struct list*)malloc(sizeof(struct list));
  16. lst->field = a;
  17. lst->ptr = NULL; // это последний узел списка
  18. return(lst);
  19. }
  20.  
  21. struct list * addelem(list *lst, int number)
  22. {
  23. struct list *temp, *p;
  24. temp = (struct list*)malloc(sizeof(list));
  25. p = lst->ptr; // сохранение указателя на следующий узел
  26. lst->ptr = temp; // предыдущий узел указывает на создаваемый
  27. temp->field = number; // сохранение поля данных добавляемого узла
  28. temp->ptr = p; // созданный узел указывает на следующий элемент
  29. return(temp);
  30. }
  31.  
  32. void showlist(list *lst){
  33. struct list *p;
  34. p = lst;
  35. if (p != NULL) {
  36. cout << p->field << " ";
  37. showlist(p->ptr); // Рекурсия
  38. }
  39. }
  40.  
  41. void FindBiggest(list *lst, int last_biggest) {
  42. struct list *p;
  43. p = lst;
  44. if (p != NULL) {
  45. if (p->field >= last_biggest) {
  46. FindBiggest(p->ptr, p->field);
  47. }
  48. else {
  49. FindBiggest(p->ptr, last_biggest);
  50. }
  51. }
  52. else
  53. cout << "Наибольший элемет = " << last_biggest << endl;
  54. }
  55.  
  56. int sum(list *lst, int s) {
  57. struct list *p;
  58. p = lst;
  59. if (p == NULL) {
  60. return s;
  61. }
  62. else {
  63. sum(p->ptr, s + p->field);
  64. }
  65. }
  66.  
  67.  
  68. int main() {
  69. setlocale(LC_ALL, "rus");
  70. system("color F0");
  71. struct list* l2 = init(0);
  72.  
  73. int Length = 0;
  74. cout << "Введите нужное число элементов списка: ";
  75. cin >> Length;
  76.  
  77. for (int i = 0; i < Length; ++i) {
  78. cout << "Введите значение: ";
  79. int TempField = 0;
  80. cin >> TempField;
  81. struct list* temp = addelem(l2, TempField);
  82. }
  83.  
  84. showlist(l2);
  85. cout << endl;
  86. FindBiggest(l2, l2->field);
  87. cout << "Сумма элементов списка = "<<sum(l2, l2->field)<<endl;
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement