Wdrożenie podwójnie połączonej listy C ++

Wdrożenie podwójnie połączonej listy C ++
Podwójnie połączona lista to koncepcja strukturalna w C ++, która składa się z 1 lub więcej węzłów. Jeden węzeł musi mieć trzy części I.mi., dane, odniesienie do poprzedniego węzła i następny nadchodzący węzeł. Mówi się, że pierwszy węzeł jest węzłem „głową”, który służy do dostępu do ogólnej listy połączonej. Ostatni węzeł linkowanej listy zawsze ma wartość zerową. Jeśli jesteś nowy w tej koncepcji i szukasz autentycznych zasobów, aby uzyskać wiedzę, ten przewodnik jest dla Ciebie.

Zacznijmy ten artykuł z nowym tworzeniem plików C ++. Musimy go utworzyć za pomocą zapytania „dotyk” terminalu. Po utworzeniu pliku naszym następnym zadaniem jest otwarcie go i utworzenie kodu C ++. Na otwarcie możesz skorzystać z dowolnego wbudowanego edytora Ubuntu 20.04 Podobnie jak edytor tekstu, edytor vim lub edytor GNU nano. Używamy więc instrukcji „nano” na naszej skorupce, aby otworzyć podwójnie.plik CC w nim.

Przykład 01:

Zróbmy podstawowy przykład kodu C ++, aby utworzyć listę podwójnie połączoną. Po otwarciu pliku dodaliśmy iostream. Zostanie wykorzystany standardowy przestrzeń nazw C ++. Następnie tworzymy strukturę węzłów o nazwie „węzeł” z niektórymi jej elementami. Zawiera zmienną liczbową „D” jako część danych. Następnie zdefiniowaliśmy trzy nowe struktury węzłów. Węzeł „p” pokazuje poprzedni węzeł, „N” pokazuje następny węzeł, a węzeł główny „H” jest określony null jako inny węzeł.

Teraz powyższa struktura nie ma sensu, dopóki nie dodamy i nie pokażemy węzłów w kodzie programu. Używamy funkcji add (), aby uzyskać dane węzła z funkcji main (). Na pierwszym wierszu tworzymy nowy węzeł „nowy węzeł” za pomocą struktury „węzeł” i przypisywania mu pamięci równej rozmiarowi „węzła”. Znaki znaków „->” są używane do odwołania się do części węzłów I.mi., Dalej, poprzednie, dane itp. Zatem odwoływaliśmy się do danych nowego węzła za pomocą -> śpiewu i dodawania danych przekazanych przez funkcję main () w parametrze „ND” do zmiennej „D” nowego węzła. Poprzedni węzeł nowego węzła zostanie zainicjowany do NULL, a jego następny węzeł będzie „głową”. Oświadczenie „jeśli” jest tutaj, aby sprawdzić, czy wartość głowy „H” nie jest równa NULL. Jeśli wartość „H” nie jest zerowa, stworzy poprzedni węzeł węzła „głową”, nowy węzeł. Ponadto głowa będzie również nowym węzłem i.mi., Posiadanie wartości nowego węzła.

Oto funkcja „show ()”, aby wyświetlić utworzony węzeł. W nim stworzyliśmy węzeł „ptr” i uczyniliśmy go „głową”. Pętla „while” jest tutaj, aby potwierdzić, że wartość „ptr” nie jest zerowa. Podczas gdy warunek jest spełniony, instrukcja Cout wyświetli dane dodane przez użytkownika w ten sam, ale przeciwny sposób. Teraz następny węzły „PTR” stanie się „PTR”.

Oto nasza funkcja main (), z której rozpoczyna się wykonanie. Nazwaliśmy funkcję „Dodaj” 4 razy, aby utworzyć nowy węzeł i dodać dane do zmiennej „D” nowego. Instrukcja Cout pokazuje nam, że będziemy nazywać funkcję „pokaż”, aby wyświetlić wszystkie dodane węzły.

Teraz nadszedł czas, aby skompilować ten kod C ++ w kompilatorze G ++ Ubuntu dla języka C ++. Po uruchomieniu kodu z „./A.Out ”, zostaliśmy wyświetlani z danymi 4 węzłami w przeciwnej kolejności I.mi., Dodaliśmy do 4, 12, 2, 7 zamówienia i wraca w 7, 2, 12, 4, pokazując ostatnie zamówienie na pierwszym miejscu.

Przykład 02:

Spójrzmy na kolejny przykład podwójnie połączonej listy. Utworzył strukturę „węzeł” z tą samą zmienną „D”, następny węzeł „N” i poprzedni węzeł „P”.

Teraz wykorzystaliśmy funkcję frontpush () do wstawienia węzła na początku z jego danymi i.mi. Węzeł główny. Stworzyliśmy w nim nowy węzeł i.mi. „NewNode” przy użyciu składni struktury „węzeł*”. Następnie odwołujemy się do jego danych „D”, następnego węzła, który będzie „głową”, a poprzedni węzeł, który będzie zerowy. Oświadczenie „IF” zostało użyte do sprawdzenia, czy wartość głowy nie jest zerowa. Jeśli głowa nie jest już „zerowa”, musimy uczynić poprzednią głowę nowym węzłem, a nagłówek wskazuje na nowy węzeł.

Funkcja Afterpush () ma wstawić nowy węzeł po naszym już wykonanym węźle. Oświadczenie „jeśli” sprawdzi, czy poprzedni węzeł jest równy NULL, czy nie, i wyświetli to za pomocą „cout”. Utworzono nowy węzeł, a dane zostaną wprowadzone do „D”. „Następny” nowego stanie się następną z poprzednich, a następny z poprzedniego stanie się nowym węzłem. Wcześniejsze nowe stanie się samym poprzednim. Jeśli następny nowy nie jest równy NULL, dokonamy następnego nowego, który jest również najbliższy nowy, nowy węzeł.

Teraz będziemy używać funkcji „EndPush” do wstawienia nowego węzła na końcu połączonej listy. Nowy węzeł został utworzony, a dane przekazywane przez Main () są przypisane do „D”, a najbliższy nowy Is Null. Tymczasowo przechowujemy głowę. „If” sprawdzi, czy lista połączona jest pusta i sprawi, że nowy węzeł „głowa”. „While” przemierzy linkowaną listę, jeśli lista połączona jest już pusta. Ponieważ „temp” jest naszym ostatnim węzłem, przypisaliśmy następną temp do „nowego”. Poprzedni nowy jest przypisany do „Temp”.

Metoda delete () używa różnych instrukcji „If” do wymiany następnej i poprzednie. W końcu funkcja „wolna” służy do zwolnienia pamięci węzła Del.

Funkcja show () tego programu jest ponownie używana do wydrukowania podwójnie połączonej listy.

Funkcja main () zaczyna wykonywać poprzez inicjowanie węzła głównego do null. Funkcja „końcowa” jest wywoływana do wstawienia węzła na końcu poprzez przekazanie „głowy” i 5 jako dane. Frontpush () jest używany dwukrotnie do dodania węzła z przodu połączonej listy. Po ponownym użyciu „Endpush ()”, dwukrotnie użyliśmy „Afterpush ()”. Funkcje show () i „delete ()” są używane jeden po drugiej, podczas gdy „usuwanie” służy do usuwania każdego ostatniego węzła z listy powiązanej, a show () wyświetla to.

Kompilacja i wykonanie pokazują listę początków do końca i listy i.mi., Po każdym usunięciu węzła.

Wniosek

W tym artykule wyjaśniono proste przykłady kodu do utworzenia podwójnie połączonej listy w C ++ podczas korzystania z Ubuntu 20.04 System Linux. Przyjrzeliśmy się również sposobom wstawienia węzła na początku i na końcu połączonej listy i wstawienia po już wykonanym węźle I.mi., pomiędzy. Funkcja usuwania usuwała każdy węzeł za każdym razem z listy połączonej.