Menu
Coddy logo textTech

Recapitulação - Construtor de Lista Ligada

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 criar uma lista encadeada do zero! Você criará uma estrutura de dados em que 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 estrutura Node com os campos Value (int) e Next (*Node). Crie uma estrutura LinkedList que mantenha 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, crie uma lista encadeada adicionando e antepondo nós e, em seguida, imprima a estrutura final da lista.

As seguintes entradas serão fornecidas:

  • Linha 1: primeiro valor a ser adicionado ao final
  • Linha 2: segundo valor a ser adicionado ao final
  • Linha 3: valor a ser adicionado ao início

Seu método Print deve produzir 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 a lista até o final (onde Next é nil) antes de adicionar o novo nó. O método Prepend deve criar um novo nó, fazer seu Next apontar para o início atual e, em seguida, atualizar o início para o novo nó. Lembre-se de que uma lista vazia tem um início nil, portanto trate esse caso no 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