Jeśli chodzi o dynamiczne przechowywanie elementów danych, powiązane listy są podobne do tablicy. Tablica to liniowa struktura danych, która przechowuje wszystkie elementy danych, umożliwiając nam przeniesienie elementów tablicy w ciągłej operacji. Podczas gdy elementy danych na połączonej liście nie są przechowywane w ciągłych lokalizacjach pamięci, gdy są przechowywane. Istnieje punkt początkowy na listy powiązanej, która nazywa się głową, a punkt końcowy nazywa się ogonem linkowanej listy w języku programowania C ++. Na połączonej liście istnieją węzły, które przechowują obiekty danych. Węzeł ma dwie części: część zawiera obiekt danych sam w sobie, a druga część zawiera wskaźnik w kierunku węzła. Ostateczny węzeł linkowanej listy zawiera wskaźnik zerowy.
Korzystamy z listy połączonej, gdy mamy tablicę do przechowywania danych, ponieważ w tablicach musimy powiedzieć długość tablicy podczas deklaracji tablicy. Ale na linokowanych listach rozmiar nie stanowi już problemu. Długość linkowanej listy rozszerzy się w miarę wymagania programu, ale lista jest ograniczona przez dostępną pamięć. Połączona lista może wykonywać wiele operacji w języku C ++, które to: Wstawienie, usunięcie, przejście, wyszukiwanie i sortowanie. Aby zrozumieć te operacje listy linków, zaimplementujmy przykład i zrozumiemy, jak działa lista powiązana w języku programowania C ++. Badamy również, jak działają te operacje na linkowanej liście.
Przykład:
Zacznijmy teraz tworzyć przykład listy Lange Lange C ++. Uruchom kompilator i rozpocznij pisanie kodu, aby zastosować przykład w praktyce. Musimy dołączyć plik nagłówka po uruchomieniu tłumacza, aby był prosty i łatwy dostęp do wbudowanych metod, klas i innych komponentów, które chcemy uwzględnić w programie języka programowania C ++.
#włączać
#włączać
za pomocą przestrzeni nazw Std;
Pakiet „iostream” jest pierwszym pakietem fundamentalnym w C ++ i jest używany przez wszystkie programy, ponieważ pozwala użytkownikom dostarczyć dane wejściowe i widokowe. Drugi standardowy nagłówek biblioteki „stdlib.H ”zapewnia niezawodne i skuteczne procedury dynamicznie alokacji pamięci do programistów C ++. Znak „#” instruuje interpretera, aby pobrał pakiety, a następnie słowo kluczowe „w tym”, mówiąc mu, aby włączyć bibliotekę. Wreszcie nazwa biblioteki jest zapisana w tokenach „”. Ostatnie zdanie „Korzystanie z przestrzeni nazw” jest niezbędne do zapewnienia kontekstu kodu.
Inicjowanie struktury
Następnie utworzymy strukturę nazwy „węzeł”, dzięki czemu utworzyliśmy węzeł listy połączonej. Po utworzeniu węzła zadeklarujemy części węzła w strukturze. Pierwsza część węzła jest miejscem, w którym przechowujemy elementy danych. Tak więc zadeklarowaliśmy zmienną typu liczb całkowitych „informacje” do przechowywania elementów danych. Następna część to zmienna wskaźnika „Follownode”, która przesunie wskaźnik w kierunku następnego Follownode na listy połączonej. Szczegóły są następujące:
węzeł struct
Int Info;
node struct* followode;
;
Wstawienie elementów danych na połączonej liście
Utworzyliśmy wiele funkcji, abyśmy mogli wstawić elementy danych na połączonej liście, którą chcemy utworzyć w języku programowania C ++.
funkcja Beg_Insert ():
Utworzyliśmy funkcję zdefiniowaną przez użytkownika w języku programowania C ++, która jest funkcją Beg_Insert (). Jak sama nazwa wskazuje, użyjemy tej funkcji do wstawienia danych na początku połączonej listy. Funkcja beg_insert () przyjmuje dwa argumenty, które są „head_info”, które jest wskaźnikiem wskaźnika głównego listy powiązanej, a drugim argumentem jest „New_info”, który jest datą nowego Follownode, który ma zostać wstawiony. Następnie funkcja utworzyła „cur_node” typu „węzeł” za pomocą funkcji Malloc (). „Węzeł cur” jest następnie inicjowany z parametrem „Nowy informację”, a jego wskaźnik jest ustawiony na głowę listy podłączonej. Korzystając z referencji „Informacje o głowie”, głowica listy powiązanej jest początkowo wymieniona do „węzła cur”.
void beg_insert (node struct ** head_info, int new_info)
struct node* cur_node = (struct node*) malloc (sizeof (struct node));
cur_node-> info = new_info;
cur_node-> followode = (*head_info);
(*head_info) = cur_node;
funkcja mid_insert ():
Teraz utworzyliśmy inną funkcję, aby wprowadzić elementy danych na środku listy polubionej, która jest funkcją Mid_Insert (). W funkcji MID () musimy wziąć dwa argumenty, które są „pre_node”, które są wskaźnikiem typu „węzła”, i „new_info”, która jest zmienną, która przechowuje nowe dane w sobie typu liczb całkowitych. Użyliśmy instrukcji „If”, aby sprawdzić „pre_node, jeśli jest to zerowa, czy nie w ciele funkcyjnym, zadeklarowaliśmy„ cur_node ”i zapisaliśmy w nim„ new_info ”. Następnie stworzyliśmy „następny” wskaźnik „New_info”, który wskazuje na następny węzeł „pre_node”.
void mid_insert (struct node* pre_node, int new_info)
if (pre_node == null)
Cout << "The Previous Node Can't be NULL";
powrót;
struct node* cur_node = (struct node*) malloc (sizeof (struct node));
cur_node-> info = new_info;
cur_node-> followode = pre_node-> followode;
pre_node-> followode = cur_node;
end_insert () funkcja:
Utworzyliśmy tę funkcję, abyśmy mogli wprowadzić elementy danych na końcu połączonej listy. Oświadczyliśmy te same argumenty, co ogłosiliśmy w funkcji Beg_Insert (). Ta funkcja najpierw sprawdza, czy lista jest pusta, czy nie. Umieść „nowe informacje” na początku listy i zwróć je, jeśli lista była również null. Jeśli nie jest to NULL, procedura przejdzie przez listę, dopóki nie trafia w węzeł „ostatni węzeł”. „Nowe informacje” są następnie dodawane jako węzeł „ostatni węzeł” na końcu listy.
void end_insert (struct node ** head_info, int new_info)
struct node* cur_node = (struct node*) malloc (sizeof (struct node));
struct node * last_node = * head_info;
cur_node-> info = new_info;
cur_node-> followode = null;
if (*head_info == null)
*head_info = cur_node;
powrót;
while (last_node-> followode != Null)
last_node = last_node-> followode;
last_node-> followode = cur_node;
powrót;
Wykorzystanie węzła z listy powiązanej
Aby usunąć obecne węzły z listy powiązanej, teraz zbudowaliśmy nową metodę o nazwie Delete Node (). Najpierw określa, czy sam węzeł główny ma nowy_key, który należy usunąć. Jeśli tak, odniesienie główne do Followode jest aktualizowane. Za pomocą pętli zlokalizuje węzeł zawierający new_key do zniszczenia. Po odkryciu węzła węzeł „przed” aktualizuje wskaźnik Follownode węzła, który zostanie zniszczony, aby można go było usunąć bez widocznego. Wreszcie funkcja Free () służy do zwolnienia pamięci.
void delete_node (struct node ** head_info, int new_key)
struct node *temp_var = *head_info, *pre -;
if (temp_var != Null && temp_var-> info == new_key)
*head_info = temp_var-> followodode;
za darmo (temp_var);
powrót;
While (temp_var != Null && temp_var-> informacje != new_key)
pre = temp_var;
temp_var = temp_var-> followode;
if (temp_var == null)
powrót;
pre-> followode = temp_var-> followode;
za darmo (temp_var);
Wyszukaj węzeł na linkowanej liście
Funkcja Search () bierze dwa argumenty, które są wskaźnikiem do „head_info” linkowanej listy i „new_key”, który ma zostać przeszukany. Funkcja przemierza połączoną listę i sprawdza, czy dane bieżącego węzła pasują do „NEW_KEY”. Jeśli dane „bieżące” węzła pasują do „nowego_keya”, funkcja zwraca true. Jeśli dane „bieżące” węzła nie są zgodne z „new_key”, funkcja przenosi się do Follownode. Jeśli węzeł „bieżący” staje się zerowy, funkcja zwraca false.
BOOL SEARD (Node struct ** Head_info, int new_key)
struct node * current = * head_info;
When (obecny != Null)
if (current-> info == new_key)
zwrócić true;
current = prąd-> followode;
zwrócić fałsz;
Sortowanie komponentów węzła na połączonej liście
W programowaniu C ++ metoda sort () jest stosowana do układania członków na połączonej liście w rosnącej kolejności. Po pierwsze, ustalono, czy odniesienie „informacji o głowie” jest null. Jeśli tak, wracamy. Następnie lista jest powtarzana kilka razy do zakończenia pętli. Sprawdzanie, czy jakiekolwiek dalsze informacje są obecne w węźle „bieżącym”, a następnie w węźle „indeks” pojawia się następny. Jeśli tak, wymieniamy dane między dwoma węzłami. Węzeł „indeksowy” jest następnie przesyłany do Follownode. Procedura jest następnie powtarzana do końca listy.
void sort (Node struct ** head_info)
struct node *current = *head_info, *index = null;
int temp_var;
if (head_info == null)
powrót;
w przeciwnym razie
When (obecny != Null)
index = current-> followode;
When (indeks != Null)
if (current-> Info> indeks-> informacje)
temp_var = current-> info;
Current-> info = indeks-> info;
indeks-> info = temp_var;
indeks = indeks-> followode;
current = prąd-> followode;
Wyświetl węzeł na połączonej liście
Function Display () przenosi wskaźnik do głowy połączonej listy jako parametr. Następnie przechodzi listę i pokazuje informacje każdego węzła. Po zakończeniu listy zatrzymuje się.
Display void (węzeł struct*)
While (węzeł != Null)
G
Cout << node->informacje << " ";
node = node-> followode;
Wywołując funkcje w funkcji Main ()
Napisaliśmy funkcję main (), abyśmy mogli zacząć pisać kod sterownika programu w ciele funkcyjnym Main (). Po pierwsze, wskaźnik „head_val” jest inicjowany do null typu „węzła”. Następnie wywołaliśmy funkcje wstawki, które stworzyliśmy na całym świecie i zdefiniowaliśmy każdą funkcję wstawki i przekazaliśmy w niej wartość. Aby wyświetlić połączoną listę w oknie konsoli użytkownika, zadzwoniliśmy do funkcji zdefiniowanej przez użytkownika (). Zadzwoń do sort (), abyśmy mogli opisać dane na połączonej liście. Aby usunąć węzeł z listy połączonej, nazwaliśmy funkcję delete_node () i przeszliśmy elementy danych, które chcemy usunąć. Jeśli chcemy znaleźć jakikolwiek element węzła, nazwaliśmy funkcję Search () i przekazaliśmy w niej element.
int main ()
struct node* head_val = null;
beg_insert (i head_val, 34);
beg_insert (i head_val, 10);
end_insert (i head_val, 48);
mid_insert (head_val-> followode, 72);
Cout << "*---Implementation of Linked List in C++---*" << endl;
Cout << "\nThe Input Linked list is: ";
wyświetlacz (head_val);
sort (i head_val);
Cout << "\n\nAfter Sorting the Input List: ";
wyświetlacz (head_val);
Cout << "\nAfter deleting an element: ";
delete_node (i head_val, 48);
wyświetlacz (head_val);
beg_insert (i head_val, 63);
beg_insert (i head_val, 84);
end_insert (i head_val, 11);
mid_insert (head_val-> followode, 100);
Cout << "\n\nThe Updated Linked list is: ";
wyświetlacz (head_val);
sort (i head_val);
Cout << "\nAfter Sorting the Input List: ";
wyświetlacz (head_val);
int Find_Data;
Cout << "\n\nEnter the element which you want to find? ";
cin >> find_data;
if (Search (& Head_val, Find_Data))
Cout << "The element " << find_data << " is found… ";
w przeciwnym razie
Cout << "The element " << find_data << " is not found… ";
Poniżej znajduje się wynik języka programowania C ++ w scenariuszu z powyższej kompilacji.
Wniosek
Połączona lista w języku programowania C ++ i rozróżnienie między tablicą a powiązaną listą zostały omówione w tym artykule. Rozmawialiśmy o różnych operacjach listy powiązanej. Najpierw skonstruowaliśmy scenariusz powiązany z listą, a następnie skonstruowaliśmy każdą operację na ilustracji z kompleksowym opisem każdego wiersza kodu C ++.