Lista jednokierunkowa w funkcji main

0

Mam utworzyć listę dynamiczną jednokierunkową, której elementami są 3 obiekty, tworzone za pomocą konstruktora domyślnego.
Całą listę mam zrobić w funkcji main, klasa zawiera jedynie wskaźnik *next.

class silnik
{
protected:
    double moc;
    double wymiar;
   
public:
    silnik();										//konstruktor domyślny
	void wypisz(){
		cout << "\n Moc = " << moc << "\n Wymiar = " << wymiar;
	}	
	silnik *next;
};
silnik::silnik()
:moc(150), wymiar(20){}

Nie mam w ogóle pomysłu jak to zrobić.
Może mi ktoś pomóc?

1
silnik *a=new silnik;
a->next=new silnik;
a->next->next=new silnik;
a->next->next->next=0;
0

hmm...udało mi się to napisać, tak jak ty, tylko teraz myślę jak to zrobić w pętli. Gdyby np. zamiast 3 elementów, wpisałbym 5.

1

Bardzo prosto - wskaźnik do pierwszego węzła musisz mieć, a dodatkowo wskaźnik do ostatniego węzła;

Tworzysz pierwszy węzeł przed pętlą, następnie przypisujesz wskaźnik tego elementu do dodatkowego wskaźnika, wskazującego na ostatni węzeł; Następnie w pętli tworzysz nowe węzły, przypisując je do a->next, po czym do a przypisujesz a->next; Na koniec do a->next wpisujesz 0, aby poprawnie zakończyć listę (albo wskaźnik na pierwszy element - wtedy z listy zrobi się bufor cykliczny).

0

Dziękuję za pomoc. :)

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