Другие языки программирования и технологии

Помогите, пожалуйста, работа со стеками в среде С++.

Создать стек с числами от -50 до +50. Определить, сколько элементов стека находится между его минимальным и максимальным элементами. Я пытался, но не получается.
Вот накидал решение.

#include <iostream>
#include <ctime>
#include <cmath>
using namespace std;

class IntStack {
struct node {
int num;
node* next;
};
private:
node* lst;
public:
IntStack(void):lst(NULL){}
~IntStack(){
this->Clear();
}
public:

void Push(int num){
node* ptr = new node();
if(ptr != NULL){
ptr->num = num;
ptr->next = lst;
lst = ptr;
}
}

void Pop(void){
node* tmp = lst;
if(lst != NULL){
lst = lst->next;
delete tmp;
}
}

int& Top(void) { return lst->num; }
int Top(void) const { return lst->num; }

bool IsEmpty(void) const {
return (lst == NULL);
}

void Clear(void){
while(! IsEmpty())
Pop();
}
};

int main(void){
const int N = 50;
srand(time(NULL));

IntStack stk;
for(int i = 0; i < 8; ++i)
stk.Push(-N + (rand() % (N*2 + 1)));

int ds[2] = {0};
int cnt, imin, imax;

imin = imax = stk.Top();
cnt = 0;
while(! stk.IsEmpty()){
if(stk.Top() > imax){
imax = stk.Top();
ds[0] = cnt;
} else if(stk.Top() < imin){
imin = stk.Top();
ds[1] = cnt;
}

cout << stk.Top() << ' ';
stk.Pop();
++cnt;
}

cout << endl;
cout << "min: " << imin << endl;
cout << "max: " << imax << endl;
cout << "cnt: " << abs(ds[0] - ds[1])-1 << endl;
cin.get();
return 0;
}
Артур Не Ваше Дело
Артур Не Ваше Дело
11 372
Лучший ответ
Ваши пытания в студию.
На чем вы остановились? ? Можно поподробнее. .

На почту скинул пример стека. Сам когда-то его писал. Там только останется в теле main заполнить его элементами и определить все по заданию. Пример заполнения там есть
Олег Ворон
Олег Ворон
4 504