Menu
Coddy logo textTech

Recapitulação - Construtor de Lista Encadeada

Parte da seção Programação Orientada a Objetos do Journey de GO da Coddy — lição 24 de 107.

challenge icon

Desafio

Fácil

Vamos construir uma lista encadeada do zero! Você criará uma estrutura de dados onde cada nó aponta para o próximo, formando uma cadeia de valores conectados na memória.

Você organizará seu código em dois arquivos:

  • linkedlist.go: Defina uma struct Node com os campos Value (int) e Next (*Node). Crie uma struct LinkedList que contém um ponteiro para o nó Head. Implemente estes métodos em *LinkedList:
    • Append - adiciona um novo nó com o valor fornecido ao final da lista
    • Prepend - adiciona um novo nó com o valor fornecido ao início da lista
    • Print - percorre a lista e imprime todos os valores separados por -> , terminando com nil
  • main.go: Leia os valores da entrada, construa uma lista encadeada anexando (appending) e prefixando (prepending) nós, e então imprima a estrutura final da lista.

As seguintes entradas serão fornecidas:

  • Linha 1: Primeiro valor para anexar (append)
  • Linha 2: Segundo valor para anexar (append)
  • Linha 3: Valor para prefixar (prepend)

Seu método Print deve exibir a lista neste formato:

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

Por exemplo, dados 10, 20 e 5, sua saída deve ser:

5 -> 10 -> 20 -> nil

O método Append precisa percorrer até o final da lista (onde Next é nil) antes de adicionar o novo nó. O método Prepend deve criar um novo nó, apontar seu Next para o head atual e, em seguida, atualizar o head para o novo nó. Lembre-se de que uma lista vazia tem um head nil, portanto, trate esse caso em seu método Append.

Experimente você mesmo

package main

import "fmt"

func main() {
	// Ler valores de entrada
	var val1, val2, val3 int
	fmt.Scanln(&val1)
	fmt.Scanln(&val2)
	fmt.Scanln(&val3)

	// Criar uma nova lista encadeada
	list := &LinkedList{}

	// TODO: Use Append para adicionar val1 e val2 à lista

	// TODO: Use Prepend para adicionar val3 ao início da lista

	// TODO: Imprimir a estrutura final da lista
}

Todas as lições de Programação Orientada a Objetos