stos template + class node
- Pobierz link
- X
- Inne aplikacje
czyli trochę strukturalne podejście do problemu stosu ;D
no i w sumie to już ostatnia implementacja, może kiedyś będą jeszcze jakieś.
klik:
no i w sumie to już ostatnia implementacja, może kiedyś będą jeszcze jakieś.
klik:
- #include <cstdlib>
- #include <iostream>
- using namespace std;
- template <class T> class node{
- T value;
- node *prev;
- public:
- node(T & val, node * p){value=val; prev = p;}
- T& vnode(){return value;}
- node *pnode(){return prev;}
- };
- template <class T> class stos{
- int Size;
- node<T> *wsk;
- public:
- stos(){Size=0; wsk=NULL;}
- ~stos(){
- while (wsk) {
- node<T> *temp=wsk;
- wsk=temp->pnode();
- delete temp;}
- }
- bool empty(){return Size==0;}//pusty
- int size(){return Size;} //rozmiar
- T& top(){return wsk->vnode();} //najwyższy element stosu
- void push(T& v){ //połóż na szczycie
- node<T>*temp=wsk;
- wsk=new node<T>(v,temp);
- Size++;
- }
- void pop(){ //zdejmij ze stosu
- if(empty()) return;
- node<T> *temp=wsk;
- wsk=temp->pnode();
- delete temp;
- Size--;
- }
- };
- int menu()
- {
- cout<<"\n......:::::MENU:::::......\n"<<endl;
- cout<<"1. Sprawdz czy stos jest pusty."<<endl;
- cout<<"2. Sprawdz rozmiar stosu."<<endl;
- cout<<"3. Najwyzszy element stosu"<<endl;
- cout<<"4. Dodaj element do stosu"<<endl;
- cout<<"5. Usun element ze stosu"<<endl;
- cout<<"6. Zakoncz program."<<endl;
- int a;
- cin>>a;
- return a;
- }
- int main()
- {
- bool run = true;
- stos<int> s;
- while(run)
- {
- switch(menu())
- {
- case 1:
- {
- if(s.empty())
- {
- cout<<"stos jest pusty."<<endl;
- }
- else
- {
- cout<<"stos nie jest pusty."<<endl;
- }
- break;
- }
- case 2:
- {
- cout<<"Rozmaiar stosu: "<<s.size()<<endl;
- break;
- }
- case 3:
- {
- if(s.empty())
- {
- cout<<"stos jest pusty."<<endl;
- }
- else
- {
- cout<<"Najwyzszy element na stosie: "<<s.top()<<endl;
- }
- break;
- }
- case 4:
- {
- int i;
- cout<<"Podaj liczbe jaka chcesz umiescic na stosie:"<<endl;
- cin>>i;
- s.push(i);
- break;
- }
- case 5:
- {
- if(!s.empty())
- {
- s.pop();
- }
- else
- {
- cout<<"Nie mozna usunac elementu ze stosu poniewaz stos jest pusty."<<endl;
- }
- break;
- }
- case 6:
- {
- run = false;
- break;
- }
- };
- }
- return 0;
- }
- Pobierz link
- X
- Inne aplikacje
Komentarze
Prześlij komentarz