Analiziraj ovaj kod. Podatke iz tvoje txt datoteke veže u dvostruku listu i zatim je ispisuje. Pogledaj komentare, ne da mi se pisati objašnjenja nadugo.
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct cvor
{
string pjesma;
string izvodjac;
string vrijeme;
cvor *naprijed;
cvor *nazad;
}*pocetak = NULL, *trenutni, *pomocni;
void dodaj()
{
if (pocetak == NULL) // ako na listi nema nijednog cvora
{
pocetak = trenutni;
trenutni->naprijed = NULL;
trenutni->nazad = NULL; // ovaj cvor nam je prvi, prednji i zadnji pokazivac su mu null
}
else
{
pomocni = pocetak; // uzimamo pomocni cvor i stavljamo ga na pocetak
while (pomocni->naprijed != NULL)
{
pomocni = pomocni->naprijed; // pomocni cvor seta na kraj liste
}
pomocni->naprijed = trenutni; // onaj na kraju liste prednji veze za nas trenutni kojeg ubacujemo
trenutni->nazad = pomocni; // nas trenuni zadnji veze za onog na kraju liste
trenutni->naprijed = NULL; // povezali smo trenutni, prednji je null
}
}
void ispis()
{
pomocni = pocetak; // pomocni na pocetak
while (pomocni->naprijed != NULL) // pomocni seta do zadnjeg
{
cout << pomocni->pjesma << endl << pomocni->izvodjac << endl << pomocni->vrijeme << endl;
pomocni = pomocni->naprijed;
}
cout << pomocni->pjesma << endl << pomocni->izvodjac << endl << pomocni->vrijeme << endl; // u while je zadnji ostao neispisan
}
int main()
{
ifstream citaj;
string linija;
citaj.open("myPlayList.txt");
if (citaj.is_open())
{
while (!citaj.eof())
{
trenutni = new cvor(); // alociramo novi cvor
getline(citaj, linija); // kupimo podatke iz datoteke za njega
trenutni->pjesma = linija;
getline(citaj, linija);
trenutni->izvodjac = linija;
getline(citaj, linija);
trenutni->vrijeme = linija;
dodaj(); // idemo ga dodati na listu
}
}
else
cout << "greska";
ispis();
return 0;
}