Jak utworzyć stos składający się ze struktur danych?

0

Witam, proszę o poradę w następującym temacie:
jak zrobić stos w c++ którego elementami będzie struktura danych?
Jeśli chodzi o format stosu to proszę o podpowiedź który będzie w tym przypadku wygodniejszy.
Poniżej kod do którego chciałabym utworzyć stos(Osobny dla struktury Osoba i Ksiazka):

#include <iostream>
#include <string>
#include <conio.h>
#include <cstdlib>
#include <fstream>

struct Osoba{
public:
std::string imie, nazwisko, adres,email;
int rok_ur;
unsigned long int tel;
};

struct Ksiazka{
public:
std::string tytul, autor, wydawnictwo;
int rok_wydania;
};
struct ElementO{
Osoba o ;
struct ElementO next;
};
typedef ElementO wsk, pom;

struct ElementK{
Ksiazka k;
struct ElementK next;
};
typedef ElementK WSK, POM;

int DodajO(Osoba x){
std::cout<<"Podaj imie:"; std::cin>>x->imie;
std::cout<<"Podaj nazwisko:"; std::cin>>x->nazwisko;
std::cout<<"Podaj adres zamieszkania:"; std::cin>>x->adres;
std::cout<<"Podaj email:"; std::cin>>x->email;
std::cout<<"Podaj rok urodzenia:"; std::cin>>x->rok_ur;
std::cout<<"Podaj numer telefonu:"; std::cin>>x->tel;
return 0;
}
int DodajK(Ksiazka y){
std::cout<<"Podaj tytul:"; std::cin>>y->tytul;
std::cout<<"Podaj autor:"; std::cin>>y->autor;
std::cout<<"Podaj wydawnictwo:"; std::cin>>y->wydawnictwo;
std::cout<<"Podaj rok wydania:"; std::cin>>y->rok_wydania;
return 0;
}
void WyswietlOsobe(Osoba x){
std::cout<<"\n "<< x.nazwisko<<" "<<x.imie <<"\n "<<x.adres<<"\n Rok urodzenia: "<<x.rok_ur<<"\n Email: "<<x.email<<"\n Tel: "<<x.tel;
}
void WyswietlKsiazke(Ksiazka y){
std::cout<<" \n"<< y.tytul<<" \n"<<y.autor <<"Wydawnictwo: "<<y.wydawnictwo<<"Rok wydania: \n"<<y.rok_wydania;
}
4

Czy istnieje jakiś powód zabraniający ci użyć gotowego rozwiązania?

0
template<typename T>
class Stack
{
    std::vector<T> elems;
};

i jedziesz

0

Chciałabym użyć szablonu tak jak podpowiadacie, ale nie do końca wiem jak, ponieważ to moja pierwsza styczność z nim. Czy dla jasności moglibyście pokazać mi na podstawie mojego kodu zamieszczonego wyżej, jak robi się taki szablon stosu dla np. struktury Osoby?

struct Osoba{
public:
std::string imie, nazwisko, adres,email;
int rok_ur;
unsigned long int tel;
}
struct ElementO{
Osoba o ;
struct ElementO next;
};
typedef ElementO wsk, pom;
1

Nie odpowiedziałaś na pytanie czy są jakieś przeszkody aby użyć gotowego stosu. Skoro tak, to uznaję, że nie ma, a jego zastosowanie wyglądałoby jak poniżej:

#include <stack>

struct Osoba
{
   std::string imie, nazwisko, adres,email;
   int rok_ur;
   unsigned long int tel;
}

int main()
{
  std::stack<Osoba> stosOsób;

  return 0;
}
1

Mylisz pojęcia.
Szablon oznacza, że piszesz go raz, a używasz wiele razy z różnymi typami (strukturami).
Jako, że STL dostarcza implementację stosu, to teraz pytanie do ciebie: czy wolno ci użyć gotowego rozwiązania, czy musisz napisać stos sam?
np:

std::stack<Osoba> stosOsob;
Osoba baretek {
    ...
};
stosOsob.push_back(bratek);
std::stack<Ksiazka> biblioteka;
Ksiazka quoVadis{
     ...
};
biblioteka.push_back(quoVadis);
biblioteka.pop_back();

Przy czym jeśli jesteś początkujący, to samodzielne pisanie szablonu może być za trudne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1