Guest User

Untitled

a guest
Jun 5th, 2016
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.23 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class stek
  6. {
  7. private:
  8. struct stekn {
  9. int number;
  10. stekn *nextadr; //указатель на адрес следующего элемента
  11. };
  12. stekn *head = 0;//указатели на верхний элемент
  13. int size = 0; //размер стека
  14. public:
  15. void push(int x, stekn *p); //добавляет элемент в стек
  16. void pop(int m, int n); //возвращает верхний элемент, извлекая его из стека
  17. int build_stek(int n);
  18. int get_number(int k, int n);
  19. void print_stek(int n);
  20. };
  21.  
  22. void stek::push(int n, stekn *p)
  23. {
  24. if (n > 0) {
  25. p = new stekn;
  26. p->nextadr = head;
  27. cout << "Введите значение ";
  28. cin >> p->number;
  29. head = p;
  30. size++;
  31. push((n - 1), head->nextadr);
  32. }
  33. return;
  34. }
  35.  
  36. void stek::pop(int m, int n)
  37. {
  38. stekn *p = 0;
  39. p = head;
  40. if (m>n || m<0)
  41. {
  42. cout << "Нет такого элемента стека" << endl;
  43. }
  44. else
  45. {
  46. for (int i = n; i >= m; i--)
  47. {
  48. p = p->nextadr;
  49. }
  50. stekn *p1 = p->nextadr;
  51. p->nextadr = p->nextadr->nextadr;
  52. delete p1;
  53. }
  54. }
  55.  
  56. int stek::build_stek(int n)
  57. {
  58. stekn *p = 0;
  59. push(n, p);
  60. cout << "стек заполнен, количество элементов в стеке=" << size << endl;
  61. return 0;
  62. }
  63. void stek::print_stek(int n)
  64. {
  65. stekn *p = 0;
  66. p = head;
  67. for (int i = n; i >= 1; i--)
  68. {
  69. cout << p->number << endl;
  70. p = p->nextadr;
  71. }
  72. }
  73.  
  74. int stek::get_number(int k, int n)
  75. {
  76. stekn *p = 0;
  77. int value = 0;
  78. p = head;
  79. if (k>n || k<1)
  80. {
  81. cout << "Нет такого элемента стека" << endl;
  82. }
  83. else
  84. {
  85. for (int i = n; i >= k+1; i--)
  86. {
  87. p = p->nextadr;
  88. }
  89. value = p->number;
  90. cout << "Требуемый элемент value=" << value << endl;
  91. }
  92. return value;
  93. }
  94.  
  95.  
  96. int main()
  97. {
  98. setlocale(0, "Russian");
  99. stek a;
  100. int n, k, b;
  101. cout << "Введите количество элементов в стеке n=";
  102. cin >> n;
  103. a.build_stek(n);
  104. cout << "Стек: \n";
  105. a.print_stek(n);
  106. cout << "Введите номер элемента, который нужно получить, k=";
  107. cin >> k;
  108. a.get_number(k, n);
  109.  
  110. return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment