Menu
Coddy logo textTech

Powtórka — kreator listy wiązanej

Część sekcji Programowanie obiektowe ścieżki GO w Coddy. Lekcja 24 z 107.

challenge icon

Wyzwanie

Łatwy

Zbudujmy od podstaw listę jednokierunkową! Utworzysz strukturę danych, w której każdy węzeł wskazuje na następny, tworząc w pamięci łańcuch połączonych wartości.

Podzielisz swój kod na dwa pliki:

  • linkedlist.go: Zdefiniuj strukturę Node z polami Value (int) i Next (*Node). Utwórz strukturę LinkedList, która przechowuje wskaźnik do węzła Head. Zaimplementuj następujące metody dla *LinkedList:
    • Append — dodaje nowy węzeł z podaną wartością na końcu listy
    • Prepend — dodaje nowy węzeł z podaną wartością na początku listy
    • Print — przechodzi przez listę i wyświetla wszystkie wartości oddzielone przez -> , kończąc na nil
  • main.go: Odczytaj wartości z wejścia, zbuduj listę jednokierunkową, dodając węzły na końcu i na początku, a następnie wyświetl końcową strukturę listy.

Dane wejściowe będą podane w następujący sposób:

  • Wiersz 1: Pierwsza wartość do dodania na końcu
  • Wiersz 2: Druga wartość do dodania na końcu
  • Wiersz 3: Wartość do dodania na początku

Twoja metoda Print powinna wyświetlić listę w następującym formacie:

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

Na przykład dla wartości 10, 20 i 5 wynik powinien wyglądać tak:

5 -> 10 -> 20 -> nil

Metoda Append musi przejść do końca listy (gdzie Next ma wartość nil) przed dodaniem nowego węzła. Metoda Prepend powinna utworzyć nowy węzeł, ustawić jego Next na bieżącą głowę listy, a następnie zaktualizować głowę, tak aby wskazywała na nowy węzeł. Pamiętaj, że pusta lista ma głowę o wartości nil, dlatego uwzględnij ten przypadek w metodzie Append.

Spróbuj swoich sił

package main

import "fmt"

func main() {
	// Wczytaj wartości wejściowe
	var val1, val2, val3 int
	fmt.Scanln(&val1)
	fmt.Scanln(&val2)
	fmt.Scanln(&val3)

	// Utwórz nową listę jednokierunkową
	list := &LinkedList{}

	// TODO: Użyj Append, aby dodać val1 i val2 do listy

	// TODO: Użyj Prepend, aby dodać val3 na początek listy

	// TODO: Wyświetl końcową strukturę listy
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Go online