Wiem, że kolejny post, ale czy mógłby ktoś mi pomóc przerobić ten kod, który wrzuca wersy do jednej listy a powinien do listy dwukierunkowej (lista podwieszana z posortowanymi wersami).
#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
#include <sstream>
using namespace std;
struct dane //struktura z danymi i wskaznikiem na nastepny element
{
string godzina;
string dzien;
string grupa;
string nazwisko;
string przedmiot;
dane* next;
dane*prev;
};
struct dane1
{
dane* head, * tail;
};
typedef dane* lista;
lista glowa = NULL;
lista wsk = NULL;
void dodawanie(lista& glowa, string godzina, string dzien, string grupa, string nazwisko, string przedmiot) // dodawanie nowego elementu do listy
{
glowa = new dane;
glowa->godzina = godzina;
glowa->dzien = dzien;
glowa->grupa = grupa;
glowa->nazwisko = nazwisko;
glowa->przedmiot = przedmiot;
glowa->next = wsk;
wsk = glowa;
};
void zapisz(lista glowa)//zapisywanie listy do osobnego pliku
{
lista kolejny;
kolejny = glowa;
while (kolejny != NULL)
{
fstream plik_wyjsciowy;
plik_wyjsciowy.open(kolejny->nazwisko + ".txt", ios::out | ios::app);
plik_wyjsciowy << kolejny->godzina << " ";
plik_wyjsciowy << kolejny->dzien << " ";
plik_wyjsciowy << kolejny->grupa << " ";
plik_wyjsciowy << kolejny->przedmiot << endl;
kolejny = kolejny->next;
}
cout << "\n";
};
void zwolnij(lista& glowa)
{
lista pom;
while (glowa != nullptr)
{
pom = glowa;
glowa = pom->next;
delete pom;
}
}
void pierwszy(dane1& L, string dzien)
{
dane* p;
p = new dane; // tworzymy nowy element
p-> dzien = 'pon';
p->prev = NULL;
p->next = L.head;
L.head = p;
if (p->next) p->next->prev = p;
else L.tail = p;
}
int main()
{
ofstream plik;
string sciezka;
//cout << "Wpisz nazwe/sciezke do pliku zawierajcego dane:"; linie polecenia
//cin >> sciezka;
plik.open("plan.txt");
if (plik.is_open())
{
string wers;
string godzina, dzien, grupa, nazwisko, przedmiot;
cout << "Plik wczytano poprawnie!" << endl;
int liczby;
string a, b;
while (!plik.eof())
{
getline(plik, wers);
istringstream is(wers); //dzielenie wersu na czesci
is >> godzina >> dzien >> grupa >> nazwisko >> przedmiot;
if (dzien = 'pon')
pierwszy;
// dodawanie(glowa, godzina, dzien, grupa, nazwisko, przedmiot); //dodanie pobranych danych z pliku do listy
}
}
else
{
cout << "Plik nie zostal wczytany, sprobuj ponownie" << endl;
}
zapisz(glowa);
zwolnij(glowa);
return 0;
}