Fügen Sie einen Knoten in einer verknüpften Liste in C ++ hinzu

Fügen Sie einen Knoten in einer verknüpften Liste in C ++ hinzu
Eine verknüpfte Liste ist eine Datenstruktur, die eine Sammlung von Knoten speichert, wobei jeder Knoten einen Datenwert und einen Zeiger auf den nächsten Knoten in der Liste speichert. Im Gegensatz zu Arrays können verknüpfte Listen dynamisch wachsen und schrumpfen, sodass es einfacher ist, mit Daten zu arbeiten, die sich ständig ändern. Linked List Insertion ist das Hinzufügen eines neuen Knotens zu einer verknüpften Liste.

In C ++ können wir einen neuen Knoten auf drei Arten in eine verknüpfte Liste einfügen:

  1. Zu Beginn der verlinkten Liste
  2. Am Ende der verlinkten Liste
  3. Nach einem bestimmten Knoten in der verlinkten Liste

Lassen Sie uns darüber sprechen, wie jede der verknüpften Listeneinfügungsmethoden einzeln durchführt.

Zu Beginn der verlinkten Liste

Um einen Knoten zu Beginn der verlinkten Liste hinzuzufügen, müssen wir folgende Schritte befolgen:

  1. Erstellen Sie einen neuen Knoten.
  2. Die Header -Adresse der verknüpften Liste wird dem neuen Knotenzeiger gegeben, damit er auf den bereits existierenden Headerknoten hinweist.
  3. Weisen Sie dem Header die neue Knotenadresse zu.

Als nächstes wäre null, wenn dieser Newnode der erste Knoten in der verlinkten Liste ist.

Am Ende der verlinkten Liste

Um einen Knoten am Ende der verknüpften Liste hinzuzufügen, müssen wir folgende Schritte befolgen:

  1. Erstellen Sie einen neuen Knoten.
  2. Überqueren Sie die verknüpfte Liste, bis wir das Ende der verknüpften Liste erreichen.
  3. Weisen Sie den neu erstellten Knoten der verknüpften List -Zeigeradresse dem letzten Knoten der verknüpften Zeigeradresse zu, damit sie auf den neu erstellten Knoten hinweisen kann.
  4. Fügen Sie am Ende einen Nullzeiger zum neu erstellten Knoten der verknüpften Liste hinzu, da er jetzt der letzte Knoten ist.

Nach einem bestimmten Knoten in der verlinkten Liste

Um einen Knoten an der n -ten Position der verknüpften Liste hinzuzufügen, müssen wir folgende Schritte befolgen:

  1. Erstellen Sie einen neuen Knoten.
  2. Überprüfen Sie, ob die gewünschte Position des Benutzers für den neuen Knoten gültig ist. Das heißt, ob die Position des neuen Knotens größer oder weniger als die Listenlistengröße ist.
  3. Überqueren Sie die verknüpfte Liste zur n -ten Position der verknüpften Liste.
  4. Weisen Sie dem neu erstellten Nächsten Zeiger den N -ten nächsten Zeiger zu.
  5. Weisen Sie dem N -ten nächsten Zeiger die neue Knotenadresse zu, damit sie auf den neuen Knoten zeigen kann.

C ++ Program Implemenation für die Knoteninsertion in verknüpfter Liste:

// Programm zum Einfügen in eine verknüpfte Liste in C abschließen++
#enthalten
Verwenden von Namespace STD;
Klassenknoten

öffentlich:
int Daten;
Knoten *Weiter;
;
void InsertatBegNningLinkedList (Knoten ** Headnode, int Data)
// Erstellen Sie dynamisch Speicher für diesen Newnode
Node* newnode = new node ();
newnode-> data = data;
newnode-> next = *headnode;
*headnode = newnode;
Cout << newNode->Daten << " inserted data successfully"
"In verknüpfte Liste" << endl;

void InsertatLastlinkedList (Knoten ** Headnode, int Data)
Node* newnode = new node ();
newnode-> data = data;
// Letzter Knoten immer auf null zeigt
newnode-> next = null;
// Wenn die verknüpfte Liste leer war
if (*headnode == null)
*headnode = newnode;
Cout << newNode->Daten << " inserted data successfully"
"In verknüpfte Liste" << endl;
zurückkehren;

Knoten * tempnode = * headnode;
// erreichen Sie den letzten Knoten der verknüpften Liste
während (Tempnode-> Weiter!= Null)
tempnode = tempnode-> Weiter;
// Die nächste des letzten Knotens Newnode zuweisen
tempnode-> next = newnode;
Cout << newNode->Daten Größe ++;

Renditegröße;

void InsertafternthnodelinkedList
(Int N, int Data, Knoten ** Headnode)

int loc = n;
int size = lengthoflinkedList (*headnode);
// Keine negativen Positionseinsätze zulässig
// Einfügung ist nicht möglich, wenn der Standort größer ist
// als die Größe der verknüpften Liste.
if (n < 0 || n > Größe)
Cout << "Insert position not valid";
if (n == 0)
InsertatBegNingLinkedList (Headnode, Data);

anders
Node* newnode = new node ();
newnode-> data = data;
newnode-> next = null;
// verwendete Tempnode, um die verknüpfte Liste durchzusetzen
Knoten * tempnode = * headnode;
// Überqueren Sie, bis Sie den n -ten Knoten erreichen
while (-n)
tempnode = tempnode-> Weiter;
// Zu den nächsten des N -ten Knoten.
newnode-> next = tempnode-> next;
// Zuwenden Sie den N -ten Knoten neben diesem neuen Knoten
tempnode-> next = newnode;
// Newnode eingefügt
Cout << newNode->Daten << " inserted data after index " <

void printlinkedList (Knoten* Knoten)
Cout << "\n";
// während der Zustand aufhört, wenn node == null
während (Knoten!= Null)
Cout << node->Daten << " "; node = node->nächste;

Cout << "\n" << endl;

int main ()

Node* headnode = null;
InsertAtBegNningLinkedList (& Headnode, 10);
InsertAtBegNningLinkedList (& Headnode, 9);
InsertAtBegNningLinkedList (& Headnode, 8);
printlinkedList (headnode);
InsertAtLastLinkedList (& Headnode, 11);
InsertAtLastLinkedList (& Headnode, 12);
InsertAtLastLinkedList (& Headnode, 14);
printlinkedList (headnode);
// Fügt Daten an der jeweiligen Position ein
InsertAfTHnodelinkedList (5, 17 & Headnode);
InsertAfTHnodelinkedList (1, 11 & headnode);
printlinkedList (headnode);
Rückkehr 0;

Ausgang:

10 Eingefügte Daten erfolgreich into -verknüpfte Liste
9 Eingefügte Daten erfolgreich verlinkte Liste
8 Eingeklagte Daten erfolgreich intino -Linked List
8 9 10
11 Eingefügte Daten am Ende
12 Eingefügte Daten am Ende
14 Eingefügte Daten am Ende
8 9 10 11 12 14
17 Eingefügte Daten nach Index 5
11 Eingefügte Daten nach Index 1 eingefügt
8 11 9 10 11 12 17 14

Erläuterung:

Der Code definiert eine Klasse mit dem Namen Knoten mit zwei Eigenschaften: (1) Daten (vom Typ int), um den Wert des Knotens zu speichern, und (2) als nächstes (vom Typ Knoten*), um den Zeiger auf den nächsten Knoten in der Liste zu speichern.

Das Programm implementiert drei Funktionen, um die Knoten in die verknüpfte Liste einzufügen:

  • InsertatBegNingLinkedList: Fügt einen Knoten am Anfang der verknüpften Liste ein.
  • InsertatLastlinkedList: Fügt einen Knoten am Ende der verknüpften Liste ein.
  • InsertabternthnodelinkedList: Fügt einen Knoten nach dem n -ten Knoten der verknüpften Liste ein.

Ein Ganzzahldaten und ein Doppelzeiger auf den Kopfknoten der verknüpften Liste werden an die Funktion InsertatBegNingLinkedList () übergeben. Mit dem neuen Node () wird der Speicher eines neuen Knotens dynamisch erstellt, und die Daten werden dann dem neuen Knoten zugeordnet. Später aktualisiert es den Kopfknoten so, dass es sich um den neuen Knoten handelt, indem der nächste Zeiger des neuen Knotens auf den vorherigen Kopfknoten eingestellt wird.

Ein Ganzzahldaten und ein Doppelzeiger auf den Kopfknoten der verknüpften Liste werden an die Methode InsertAtlastlinkedList () übergeben. Mit dem neuen Node () wird der Speicher eines neuen Knotens dynamisch erstellt, und die Daten werden dann dem neuen Knoten zugeordnet. Der nächste Zeiger des neuen Knotens wird dann auf null gesetzt. Wenn die verknüpfte Liste leer ist, wird der Kopfknoten aktualisiert, um als neuer Knoten zu dienen. In jedem anderen Fall durchquert es die verknüpfte Liste, bis sie den letzten Knoten erreicht. Zu diesem Zeitpunkt wird der neue Knoten auf den nächsten Zeiger des letzten Knotens gesetzt.

Die Funktion InsertFernthnodelinkedList () fügt einen neuen Knoten mit den angegebenen Daten nach dem N -ten Knoten in einer verknüpften Liste hinzu. Die verknüpfte Liste und ihre Größe sowie die Position N und die zu fügigen Daten werden als Argumente übergeben. Erstens überprüft die Funktion, ob der Ort n korrekt ist (i.e., Nicht negativ und nicht größer als die Größe der verknüpften Liste). Fehlermeldungen werden gedruckt, wenn die Position ungültig ist. Wenn die Position gültig ist, konstruiert die Funktion einen neuen Knoten, legt ihre Daten und die nächsten Felder fest und sucht dann iterativ über die verknüpfte Liste, um den N -ten Knoten zu finden. Dann verbindet es den n -ten Knoten und den neuen Knoten, indem die nächsten Zeiger des n -ten Knotens und des neuen Knotens geändert werden.

Die Länge der verknüpften Liste wird von der Funktion Länge () zurückgegeben, die einen Zeiger auf den Kopfknoten der verknüpften Liste akzeptiert. Dies wird erreicht, indem Sie in der verlinkten Liste umgehen, die Knoten zählen und die Anzahl zurückgeben.

In der Hauptmethode erstellt das Programm eine leere verknüpfte Liste und ruft dann alle drei Einfügungsmethoden mit verschiedenen Daten- und Positionseingaben auf. Schließlich druckt es die verknüpfte Liste, um die Ergebnisse anzuzeigen.

Abschluss

Je nachdem, wo eine Einführung in eine verknüpfte Liste aufgenommen wird, gibt es verschiedene zeitliche und räumliche Komplexitätsprobleme. Als äußerst wirksamer Betrieb hat das Einsetzen zu Beginn der Liste eine konstante Zeitkomplexität von O (1) und eine konstante Raumkomplexität von O (1). Im schlimmsten Szenario benötigt das Einfügen am Ende der Liste die linear. Dies ist so, dass wir den Heckknoten entdecken können, indem wir die Liste durchqueren. Im schlimmsten Fall benötigt das Einfügen an einer bestimmten Position in der Liste auch linear. Unabhängig davon, wie sie hinzugefügt werden, sind die verknüpften Listen eine flexible und dynamische Möglichkeit, die Daten zu speichern, die auf viele verschiedene Arten verwendet werden können.