Menu
Coddy logo textTech

Wiederholung – Linked List Builder

Teil des Abschnitts Objektorientierte Programmierung der GO-Journey von Coddy — Lektion 24 von 107.

challenge icon

Aufgabe

Einfach

Lass uns eine verknüpfte Liste von Grund auf neu bauen! Du wirst eine Datenstruktur erstellen, bei der jeder Knoten auf den nächsten zeigt und so eine Kette von verbundenen Werten im Speicher bildet.

Du wirst deinen Code auf zwei Dateien verteilen:

  • linkedlist.go: Definiere ein Node-Struct mit den Feldern Value (int) und Next (*Node). Erstelle ein LinkedList-Struct, das einen Zeiger auf den Head-Knoten hält. Implementiere diese Methoden für *LinkedList:
    • Append - fügt einen neuen Knoten mit dem angegebenen Wert am Ende der Liste hinzu
    • Prepend - fügt einen neuen Knoten mit dem angegebenen Wert am Anfang der Liste hinzu
    • Print - durchläuft die Liste und gibt alle Werte getrennt durch -> aus, endend mit nil
  • main.go: Lies Werte aus der Eingabe ein, baue eine verknüpfte Liste durch Anhängen (Append) und Voranstellen (Prepend) von Knoten auf und gib dann die finale Listenstruktur aus.

Die folgenden Eingaben werden bereitgestellt:

  • Zeile 1: Erster Wert zum Anhängen
  • Zeile 2: Zweiter Wert zum Anhängen
  • Zeile 3: Wert zum Voranstellen

Deine Print-Methode sollte die Liste in diesem Format ausgeben:

[value1] -> [value2] -> [value3] -> nil

Zum Beispiel, gegeben 10, 20 und 5, sollte deine Ausgabe wie folgt aussehen:

5 -> 10 -> 20 -> nil

Die Append-Methode muss bis zum Ende der Liste traversieren (dort, wo Next gleich nil ist), bevor der neue Knoten hinzugefügt wird. Die Prepend-Methode sollte einen neuen Knoten erstellen, dessen Next auf den aktuellen Head richten und dann den Head auf den neuen Knoten aktualisieren. Denke daran, dass eine leere Liste einen nil-Head hat, also behandle diesen Fall in deiner Append-Methode.

Probier es selbst

package main

import "fmt"

func main() {
	// Eingabewerte lesen
	var val1, val2, val3 int
	fmt.Scanln(&val1)
	fmt.Scanln(&val2)
	fmt.Scanln(&val3)

	// Eine neue verknüpfte Liste erstellen
	list := &LinkedList{}

	// TODO: Append verwenden, um val1 und val2 zur Liste hinzuzufügen

	// TODO: Prepend verwenden, um val3 am Anfang der Liste hinzuzufügen

	// TODO: Die finale Listenstruktur ausgeben
}

Alle Lektionen in Objektorientierte Programmierung