#include<iostream.h>
typedef struct el{ //стуктура для элемента стэка
int val; //тип элементов
el *next; //указатель на следущий
}element, *pelement; //указатель и просто статический тип на основе структуры
pelement New(){ //своя функция для выделения памяти под новый элемент
pelement p; //новая переменная-указатель
p=new element; //выделяем память размером со структуру
p->next = 0; //адрес следующего элемента равен нулю
return p; //возвращаем адрес элемента
}
pelement create(int val, pelement p){ //создаём стэк, в качестве параметров функции указатель на вершину и данные
if(!p){ p=New(); p->val = val; return p;} //если вершина не существует, тоесть стэк пустой то создаём его
else{ pelement t; t = New(); t->val = val; t->next = p; return t;} //иначе кидаем новый элемент и адрес вершини меняеться, поскольку стэк
}
void print(pelement p){ //распечатка стека, в качестве параметра вершина стэка
for(pelement t = p; t!=0; t=t->next) //пока адрес элемента не равен нулю, тоесть конец стэка - печатать стэк
cout<<t->val; //собственно сама распечатка значения текущего элемента
}
main(){ //главная функция
int mas[5]; //массив из пяти цэлых
pelement p=0; //пустой стэк
cout<<"Input elements of array: "<<endl; //запрос на ввод масива
for(int i=0; i<5; i++){ пока не конец массива
cin>>mas; //вводим значение элемента
p = create(mas, p); //закидываем в стэк
}
cout<<"Steck: "<<endl; //запрос на распечатку
print(p); //собственно сама распечтка
return 0; //успешное завершение
}
Программа работающая со стеком(C++)
Помогите бедному студенту!
1. Изучаешь синтаксис C/C++
http://www.codenet.ru/progr/cpp/
2. Изучаешь IDE MSVC
http://www.codenet.ru/progr/visualc/
3. Разбираешься с STL
http://www.codenet.ru/progr/cpp/istl.php
И все !
Цитата:
Originally posted by Tai
Спасибо тебе Linker3. Препод покряхтел своей головой и сказал что код правельный (обычно такого от него не дождешься). Вот только он меня заставил коментарии писать к каждой строке. МОжешь рассказать что там к чему?
Спасибо тебе Linker3. Препод покряхтел своей головой и сказал что код правельный (обычно такого от него не дождешься). Вот только он меня заставил коментарии писать к каждой строке. МОжешь рассказать что там к чему?
Код:
С Stl:
Код:
#include<iostream> //библиотека потоков
#include<stack> //библиотека шаблона класса для стэка
using namespace std; //пространство имён std
main(){ //главная функция
stack<int> stk; //конструктор на пустой стэк из целых элементов
int i; //целая переменная
int key=0; //....
cout<<"Input digits, edn of input is value -1: ";//вводим значения пока не будет значение -1
while(){ //бесконечный цикл
cin>>key; //вводим значение
if(key==-1) break; //если -1 то выход из цыкла
stk.push(key); //заносим в стэк
}
while(!stk.empty()){ //пока стэк не пустой
i = stk.top(); //извлекаем значение
cout<<i; //печатаем значение
stk.pop(); //перемещаемся на следующий элемент
}
return 0;//успешное завершение
}
#include<stack> //библиотека шаблона класса для стэка
using namespace std; //пространство имён std
main(){ //главная функция
stack<int> stk; //конструктор на пустой стэк из целых элементов
int i; //целая переменная
int key=0; //....
cout<<"Input digits, edn of input is value -1: ";//вводим значения пока не будет значение -1
while(){ //бесконечный цикл
cin>>key; //вводим значение
if(key==-1) break; //если -1 то выход из цыкла
stk.push(key); //заносим в стэк
}
while(!stk.empty()){ //пока стэк не пустой
i = stk.top(); //извлекаем значение
cout<<i; //печатаем значение
stk.pop(); //перемещаемся на следующий элемент
}
return 0;//успешное завершение
}