Lista priorytetowa

0

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;
		
	}
	
	
}
5

Linus Torvalds napisał
If you need more than 3 levels of indentation, you’re screwed anyway, and should fix your program.

Ty masz 10.

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