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

Pratique por conta própria: Compilador de Go online