Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- class stek
- {
- private:
- struct stekn {
- int number;
- stekn *nextadr; //указатель на адрес следующего элемента
- };
- stekn *head = 0;//указатели на верхний элемент
- int size = 0; //размер стека
- public:
- void push(int x, stekn *p); //добавляет элемент в стек
- void pop(int m, int n); //возвращает верхний элемент, извлекая его из стека
- int build_stek(int n);
- int get_number(int k, int n);
- void print_stek(int n);
- };
- void stek::push(int n, stekn *p)
- {
- if (n > 0) {
- p = new stekn;
- p->nextadr = head;
- cout << "Введите значение ";
- cin >> p->number;
- head = p;
- size++;
- push((n - 1), head->nextadr);
- }
- return;
- }
- void stek::pop(int m, int n)
- {
- stekn *p = 0;
- p = head;
- if (m>n || m<0)
- {
- cout << "Нет такого элемента стека" << endl;
- }
- else
- {
- for (int i = n; i >= m; i--)
- {
- p = p->nextadr;
- }
- stekn *p1 = p->nextadr;
- p->nextadr = p->nextadr->nextadr;
- delete p1;
- }
- }
- int stek::build_stek(int n)
- {
- stekn *p = 0;
- push(n, p);
- cout << "стек заполнен, количество элементов в стеке=" << size << endl;
- return 0;
- }
- void stek::print_stek(int n)
- {
- stekn *p = 0;
- p = head;
- for (int i = n; i >= 1; i--)
- {
- cout << p->number << endl;
- p = p->nextadr;
- }
- }
- int stek::get_number(int k, int n)
- {
- stekn *p = 0;
- int value = 0;
- p = head;
- if (k>n || k<1)
- {
- cout << "Нет такого элемента стека" << endl;
- }
- else
- {
- for (int i = n; i >= k+1; i--)
- {
- p = p->nextadr;
- }
- value = p->number;
- cout << "Требуемый элемент value=" << value << endl;
- }
- return value;
- }
- int main()
- {
- setlocale(0, "Russian");
- stek a;
- int n, k, b;
- cout << "Введите количество элементов в стеке n=";
- cin >> n;
- a.build_stek(n);
- cout << "Стек: \n";
- a.print_stek(n);
- cout << "Введите номер элемента, который нужно получить, k=";
- cin >> k;
- a.get_number(k, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment