Ponieważ okrągła lista połączona ma rozmiar dynamiczny, pamięć może być przydzielona tylko wtedy, gdy jest potrzebna. Artykuł będzie zademonstrować okrągłą listę połączoną z ilustracjami programu C ++ w C++.
Zastosowanie okrągłej listy połączonej
Okrągła lista połączona to taka, w której wszystkie węzły są połączone w okręgu. Nie ma elementu zerowego na okrągłej liście połączonej. Punktem początkowym może być dowolny węzeł. Zaczynając od dowolnego miejsca na liście, możemy przemierzać całą listę. Wszystko, co musimy teraz zrobić, to poczekać, aż pierwszy węzeł zostanie ponownie osiągnięty. Tam mamy pewne zastosowania okrągłej listy połączonej w następujący sposób:
Przykład 1: Tworzenie okrągłego połączonej listy przemieszczania się w C++
Jedyną różnicą jest to, że na okrągłej liście połączonej węzeł w ostatniej pozycji będzie miał swój następny link do głowicy listy, podczas gdy na liniowej listy Lined, ostatni węzeł miałby następny punkt do dołu dolnej części Lista. Implementacja okrągłego połączonego kodu przemieszczania listy w C ++ pokazano poniżej.
W pierwszym etapie zdefiniowaliśmy klasę jako „węzeł”, w którym ogłosiliśmy zmienną Int jako „mydata”. Zmienna „mydata” to dane dla węzła. Wskaźnik jest również zadeklarowany w tej klasie jako „Następny” dla wskaźnika do następnego węzła na liście okrągłych.
Po klasie „węzeł” mamy funkcję o nazwie „Push”, która wkłada węzeł na początku listy okrągłych. Zdefiniowaliśmy konstruktor, który przekazuje odniesienie wskaźnika Head_Node w klasie „węzeł” i zmienną „mydata” jako parametr. Nowy wskaźnik jest tworzony jako „MyPtr”, który nazwał i przypisał „węzeł”.
Następnie wskaźnik temperatury jest deklarowany jako „temp”, który ma head_node. Istnieją wskaźniki, takie jak „ptr1” i „ptr2”, które nazywane są „mydata” i wskaźnik „następny” i biorą ich adresy. Następnie mamy instrukcję IF, w którym jest tylko_node head, i jest ono trzymane null. Jeśli okrągła lista połączona jest zerowa, dodaj następny do ostatniego węzła za pomocą pewnej pętli. W przeciwnym razie instrukcja zostanie wykonana, w której głowa wskazuje na pierwszy węzeł listy.
Następnie stworzyliśmy inną funkcję jako „Displaylist”, aw konstruktorze tej funkcji właśnie przekazaliśmy głowę węzłów okrągłej listy połączonej. Funkcja wyświetli węzły na okrągłej listy połączonej za pośrednictwem pętli do-podczas instrukcji IF, która ma warunek, że głowa węzła nie powinna być równa NULL.
Wreszcie istnieje główna metoda, która przetestuje wdrożenie opisane wcześniej. Głowa wskaźnika klasy „węzeł” została ustawiona na „null” w głównej metodzie. Następnie dodaj dane do połączonej listy za pomocą metody push (). „Głowa” jest przekazywana do funkcji „Displaylist”, która wyświetli listę okrągłą połączoną.
#włączaćOkrągła lista połączona zaimplementowana w powyższym wyjściu kodu jest wyświetlana na następującym obrazie.
Przykład 2: Podziel okrągłą listę połączoną na dwie połowy w C++
Poniższy program umożliwia podział okrągłej listy połączonej na dwie części możliwe. Spójrzmy na implementację, w jaki sposób podzieliliśmy listę okrągłą połączoną w C++.
Najpierw mamy klasę „węzeł”, w której zdefiniowaliśmy zmienną „elementy”, a wskaźnik „następny” węzła. Członkowie klasy „węzeł” są publiczni w tym programie. Następnie zbudowaliśmy funkcję zwaną „halvelist”, w której od samego początku dzieliśmy listę z głową na dwie listy. Head1_Node i Head2_Node są odniesieniami do dwóch wynikających z powiązanych węzłów listy.
W funkcji zadeklarowaliśmy dwa wskaźniki, „s_ptr” i „f_ptr”, które ma głowę listy powiązanej. Jeśli instrukcja IF jest używana dla węzła głównego zawierającego wartość zerową, to mamy pewną pętlę, która stwierdza, że f_ptr-> następny staje się głową, jeśli lista okrągła ma dziwne węzły, a f_ptr-> następny-> następny staje Lista zawiera nawet węzły.
Po pętli While ponownie użyliśmy instrukcji IF, w której warunek brzmi: „Jeśli lista zawiera parzystą liczbę elementów, F_PTR należy przenieść i ustawić wskaźnik Head1_Node pierwszej połowy”. W następnej instrukcji IF ustawiliśmy Head2_Node na drugą połowę listy połączonej.
Przypisaliśmy S_PTR-> obok f_ptr-> obok, aby drugi połowę cyrkularny listy, a następnie S_PTR-> jest utrzymywane równe głowicy listy i sprawia, że pierwsza połowa okrąg.
Druga funkcja jest tworzona jako „push”, która jest wykorzystywana do wstawienia węzła na początku okrągłej listy z tą funkcją. W funkcji warunek implikuje, czy head_node of okrągła lista połączona nie jest null, a następnie ustaw obok ostatniego węzła. Trzecia funkcja, „Displaylist”, jest generowana dla wyświetlania okrągłej listy połączonej.
Następnie mamy główną funkcję, w której zainicjowaliśmy głowę, głowę1_node i head2_node pusty. Metoda push jest używana do wstawienia wartości na połączonej liście, a za pośrednictwem polecenia Cout, okrągła lista połączona i podzielona okrągła lista będzie wyświetlana.
#włączaćTutaj mamy wyjście oryginalnej okrągłej listy połączonej, wyjście pierwszej półkolistej listy i drugiej połowy okrągłej listy połączonej.
Przykład 3: sortowanie okrągłej listy połączonej w C++
W pierwszym etapie mamy klasę „Nodelist”, która zawiera zmienne członkowskie i wskaźniki w klasie. Następnie utworzyliśmy funkcję „SortInserition”, która wprowadza nowy węzeł na posortowanej liście. Ta funkcja wymaga wskaźnika do węzła głównego, ponieważ może zmienić głowę listy wejściowej.
Następnie mamy instrukcję IF dla Nodelist, która zawiera tylko węzeł. Punkt_nodowy do nowego węzła. W instancji, jeśli instrukcja przypisaliśmy dane Nodelist do bieżącego.
Tutaj dodaje się nowy węzeł przed węzłem głównym. Blok if-Else ma pętlę w czasie, która ma warunek; Jeśli wartość jest mniejsza niż wartość głowy, następny lub ostatni węzeł musi zostać zmieniony. Pętla While zidentyfikuje węzeł przed punktem wstawienia.
Następnie stworzyliśmy nowy_nodelistę, następny węzeł, który lokalizuje następny węzeł wskaźnika. Następnie, aktualnie-> Następnie musimy zmienić lokalizację wskaźnika na następny. Do drukowania węzłów z listy połączonej nazwali funkcję „showlist”.
Ostatecznie mamy główną funkcję, w której zainicjowaliśmy tablicę i iterowało nad określoną tablicą, która będzie sortowaną tablicą.
#włączaćSortowana okrągła lista połączona jest wyświetlana na poniższym ekranie Ubuntu.
Wniosek
To kończy naszą dyskusję na temat wkładania, dzielenia i sortowania węzłów na okrągłej liście połączonej w C++. W wielu aplikacjach używana jest okrągła lista połączona. Mam nadzieję, że pomoże ci to usunąć dwuznaczność związaną z okrągłą listą połączoną w C++.