Menu
Coddy logo textTech

Повторение: Конструктор связного списка

Часть раздела Объектно-ориентированное программирование путешествия по GO на Coddy — урок 24 из 107.

challenge icon

Задание

Легко

Давайте создадим связный список с нуля! Вы создадите структуру данных, где каждый узел указывает на следующий, образуя цепочку связанных значений в памяти.

Вы организуете свой код в двух файлах:

  • linkedlist.go: Определите структуру Node с полями Value (int) и Next (*Node). Создайте структуру LinkedList, которая содержит указатель на узел Head. Реализуйте следующие методы для *LinkedList:
    • Append — добавляет новый узел с заданным значением в конец списка
    • Prepend — добавляет новый узел с заданным значением в начало списка
    • Print — обходит список и выводит все значения, разделенные -> , заканчивая nil
  • main.go: Считайте значения из входных данных, постройте связный список, добавляя узлы в конец и в начало, а затем выведите итоговую структуру списка.

Будут предоставлены следующие входные данные:

  • Строка 1: Первое значение для добавления в конец (append)
  • Строка 2: Второе значение для добавления в конец (append)
  • Строка 3: Значение для добавления в начало (prepend)

Ваш метод Print должен выводить список в следующем формате:

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

Например, для входных данных 10, 20 и 5 ваш вывод должен быть:

5 -> 10 -> 20 -> nil

Метод Append должен пройти до конца списка (где Next равен nil), прежде чем добавить новый узел. Метод Prepend должен создать новый узел, направить его Next на текущую голову (head), а затем обновить голову на новый узел. Помните, что у пустого списка голова равна nil, поэтому обработайте этот случай в методе Append.

Попробуйте сами

package main

import "fmt"

func main() {
	// Чтение входных значений
	var val1, val2, val3 int
	fmt.Scanln(&val1)
	fmt.Scanln(&val2)
	fmt.Scanln(&val3)

	// Создание нового связанного списка
	list := &LinkedList{}

	// TODO: Используйте Append, чтобы добавить val1 и val2 в список

	// TODO: Используйте Prepend, чтобы добавить val3 в начало списка

	// TODO: Выведите итоговую структуру списка
}

Все уроки раздела Объектно-ориентированное программирование