Другие языки программирования и технологии
Вопрос по С++. Стек
Помогите написать стек, в который можно вносить значения его элементов.. . После чего нужна функция, которая должна поменять элементы стека местами - задом на перёд.. . Как это реализовать на словах я понимаю, но преобразовать в код - не получается.. . Помогите хотя бы с перестановкой элементов, пробовал через "swap" но потом узнал, что он не приемлемый для стека так как в нем можно работать только с "головой"
как горбатый вариант -- создать второй стек, перегнать элементы из первого стека во второй и подправить указатель на первый стек чтобы указывал на второй...)))
Еще более "горбатый вариант":
#include <ctime>
#include <stack>
#include <cstdlib>
#include <iostream>
using namespace std;
typedef stack<int> stacki;
int last(stacki &s) {
int n = s.top();
s.pop();
if (s.empty()) {
return n;
} else {
int v = last(s);
s.push(n);
return v;
}
}
void srev(stacki &s) {
if (!s.empty()) {
int n = last(s);
srev(s);
s.push(n);
}
}
int main() {
srand(time(0));
stacki s;
cout << "put elements:";
for (int c = 0; c < 10; ++c) {
int v = rand() % 101 - 50;
cout << ' ' << v;
s.push(v);
}
cout << "\nreverse";
srev(s);
cout << "\npop elements:";
while (!s.empty()) {
cout << ' ' << s.top();
s.pop();
}
}
#include <ctime>
#include <stack>
#include <cstdlib>
#include <iostream>
using namespace std;
typedef stack<int> stacki;
int last(stacki &s) {
int n = s.top();
s.pop();
if (s.empty()) {
return n;
} else {
int v = last(s);
s.push(n);
return v;
}
}
void srev(stacki &s) {
if (!s.empty()) {
int n = last(s);
srev(s);
s.push(n);
}
}
int main() {
srand(time(0));
stacki s;
cout << "put elements:";
for (int c = 0; c < 10; ++c) {
int v = rand() % 101 - 50;
cout << ' ' << v;
s.push(v);
}
cout << "\nreverse";
srev(s);
cout << "\npop elements:";
while (!s.empty()) {
cout << ' ' << s.top();
s.pop();
}
}
Похожие вопросы
- ВОПРОС программистам Интересует стек и работа с памятью. В каких учебниках можно про это узнать более детально?
- Можно ли сказать, что стек - временный участок памяти, в котором данные хранятся по принципу LIFO(last in first out)?
- Помогите, пожалуйста, найти ошибку в программе сортировки стека (по убыванию ) на Си.
- Переменные и стек
- вопрос про стеки и очереди в паскале/с++
- Вопрос о стеке и куче
- Что такое стек и куча? Они абстрактные понятия, или же конкретные? Очень сильно запутался.
- Помогите, пожалуйста, работа со стеками в среде С++.
- Что такое стек?
- Нужно в стеке найти первое появление т элемента и поставить его в начало стека. Помогите, пожалуйста!!!