C/C++
Помогите написать код c++
Дано число N (>0) и набор из N чисел. Создать стек, содержащий исходные числа (последнее число будет вершиной стека), и вывести указатель на его вершину.
#include <iostream>
using namespace std;
class Stack {
public:
Stack(int buffer) :
buffer(buffer),
stack(nullptr),
next(nullptr),
end(nullptr) {
}
~Stack() {
if (stack != nullptr) clear();
}
void push(int value) {
if (stack == nullptr) {
stack = new int[buffer];
next = stack;
end = stack + buffer;
}
if (next != end) {
*next = value;
++next;
}
}
void pop() {
--next;
if (next == stack) clear();
}
void clear() {
delete[] stack;
end = next = stack = nullptr;
}
size_t size()const {
if (stack != nullptr) return next - stack;
return 0;
}
bool empty()const {
return stack == nullptr;
}
int* top() {
if (next != stack) return next - 1;
return stack;
}
private:
int buffer;
int* stack;
int* next;
int* end;
};
int main() {
Stack stack(5);
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
stack.push(50);
if (!stack.empty()) {
int* pointer = stack.top();
cout << *pointer << endl;
} else {
puts("Stack empty!");
}
system("pause > nul");
}
using namespace std;
class Stack {
public:
Stack(int buffer) :
buffer(buffer),
stack(nullptr),
next(nullptr),
end(nullptr) {
}
~Stack() {
if (stack != nullptr) clear();
}
void push(int value) {
if (stack == nullptr) {
stack = new int[buffer];
next = stack;
end = stack + buffer;
}
if (next != end) {
*next = value;
++next;
}
}
void pop() {
--next;
if (next == stack) clear();
}
void clear() {
delete[] stack;
end = next = stack = nullptr;
}
size_t size()const {
if (stack != nullptr) return next - stack;
return 0;
}
bool empty()const {
return stack == nullptr;
}
int* top() {
if (next != stack) return next - 1;
return stack;
}
private:
int buffer;
int* stack;
int* next;
int* end;
};
int main() {
Stack stack(5);
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
stack.push(50);
if (!stack.empty()) {
int* pointer = stack.top();
cout << *pointer << endl;
} else {
puts("Stack empty!");
}
system("pause > nul");
}
Николай Каяшев
спасибо )))
наверное в с++ постоянно нужно изобретать какой-то велосипед...
Вам нужно реализовать свой класс стек, или использовать любую готовую структуру данных, реализующую принцип FIFO?
upd.: да, перепутал, лифо
https://pastebin.com/vy15zP1B
Условия у вас неполные. "Дано число N (>0) и набор из N чисел" и где они даны?
Или N пользовательно должен ввести, а затем набор чисел программа сама формирует?
upd.2:
Иди, сдай и проверь, подойдёт или нет. Я будущее не умею предсказывать, только говнокодить.
upd.: да, перепутал, лифо
https://pastebin.com/vy15zP1B
Условия у вас неполные. "Дано число N (>0) и набор из N чисел" и где они даны?
Или N пользовательно должен ввести, а затем набор чисел программа сама формирует?
upd.2:
Иди, сдай и проверь, подойдёт или нет. Я будущее не умею предсказывать, только говнокодить.
Павел Лисин
LIFO )
Николай Каяшев
ну вот такая задача, на листе с задачей идут примеры кода и сами задачи то что ты отправил это подойдет ?)
Похожие вопросы
- ПРОШУ, ПОМОГИТЕ НАПИСАТЬ КОД C++
- Помогите написать код C++
- Помогите написать код C++ со строками
- Помогите написать код c++ со строками
- Помогите пожалуйста написать код.(C++)
- Помогите с кодом C++
- Написать код C++
- Прошу помогите написать код на c++, нужно сдать сегодня ?
- ПОМОГИТЕ С КОДОМ C++ .
- Помогите написать код с файлами C++