Mam problem potrzebuje dodawać do mojej struktury dane na początek i zapamiętywać jej poprzedników oraz sumować wartości wszystkich poprzednich i wpisywać je kolejno do każdego ale nie mam pomysłu jak to zrobić. musi to być zrobione na listach potrzebuję tego do algorytmu dijkstry.
moja struktura w której chcę to zrobić :
struct sasiad {
miasto* wsk_miasto;
int odleglosc;
sasiad* nastepny;
sasiad* prev;
};
oraz funkcja która powinna to robić
void szukaj_sasiadow(miasto* wsk_miasto ,sasiad*& lista_odleglosci ) {
int temp,odleglosc=0;
sasiad* tem;
struct sasiad* temp_lista=lista_odleglosci;
struct sasiad* wsk_head=nullptr ;
temp = INF;
/*while (temp_lista) {
if ((temp_lista->odleglosc<temp)) {
temp = temp_lista->odleglosc;
tem = temp_lista->wsk_miasto->nazwa_miasta;
}
temp_lista = temp_lista->nastepny;
}*/
temp_lista = lista_odleglosci;
sasiad* temp_1 = temp_lista;
sasiad* miasto_sasiad = nullptr;
miasto* temp_miasto = wsk_miasto;
sasiad* prio;
while (temp_lista) {
if (temp_lista->odleglosc!=temp) {
tem = temp_lista;
temp_miasto = wsk_miasto;
while (temp_miasto) {
if (temp_miasto->nazwa_miasta==temp_lista->wsk_miasto->nazwa_miasta){
wsk_head = temp_miasto->head;
if (wsk_head) {
while (wsk_head) {
temp_1 = lista_odleglosci;
while (temp_1)
{
if(temp_1->wsk_miasto->nazwa_miasta==wsk_head->wsk_miasto->nazwa_miasta){
if (!temp_1->prev) {
temp_1->prev = new sasiad{ tem->wsk_miasto,odleglosc,nullptr,nullptr };
temp_1->odleglosc = wsk_head->odleglosc;
}
else {
temp_1->prev = temp_1;
temp_1->prev = new sasiad{ tem->wsk_miasto,odleglosc,nullptr,nullptr };
temp_1->odleglosc = wsk_head->odleglosc;
}
}
temp_1 = temp_1->nastepny;
}
wsk_head = wsk_head->nastepny;
}
}
}
temp_miasto = temp_miasto->nastepne;
}
}
temp_lista = temp_lista->nastepny;
}
}