Gå til indholdet

N208 Linked liste

Du skal skabe en tom konsol app med følgende kode:

class Program
{
    static void Main(string[] args)
    {
        MyLinkedList list = new MyLinkedList();
        list.AddLast(1);
        list.AddLast(2);
        list.AddLast(3);
        list.PrintAllNodes();

        Console.WriteLine("Indsætter 5 i starten");
        list.AddFirst(5);
        list.PrintAllNodes();
    }
}

public class Node
{
    public int Data { get; set; }
    public Node Next { get; set; }

    public Node(int data)
    {
        Data = data;
        Next = null;
    }
}

public class MyLinkedList
{
    private Node head;

    public void AddFirst(int data)
    {
        // kode
    }

    public void AddLast(int data)
    {
        // kode
    }

    public void PrintAllNodes()
    {
        // kode
    }
}

I denne opgave skal du implementere din egen version af en linked liste i C#. En linked liste er en datastruktur, der består af en række elementer, hvor hvert element har en reference til det næste element i listen. Det gør det nemt at tilføje og fjerne elementer fra listen, da det kun kræver ændring af referencerne, uden at skulle flytte på de andre elementer som i et array.

I eksemplet ovenfor skal der implementeres en simpel linked liste med grundlæggende funktionaliteter som at tilføje elementer i starten og slutningen af listen samt udskrive alle elementerne i listen.

Klik for at se et forslag til en løsning
class Program
{
    static void Main(string[] args)
    {
        MyLinkedList list = new MyLinkedList();
        list.AddLast(1);
        list.AddLast(2);
        list.AddLast(3);
        list.PrintAllNodes();

        Console.WriteLine("Indsætter 5 i starten");
        list.AddFirst(5);
        list.PrintAllNodes();
    }
}

public class Node
{
    public int Data { get; set; }
    public Node Next { get; set; }

    public Node(int data)
    {
        Data = data;
        Next = null;
    }
}

public class MyLinkedList
{
    private Node head;

    public void AddFirst(int data)
    {
        Node newNode = new Node(data);
        newNode.Next = head;
        head = newNode;
    }

    public void AddLast(int data)
    {
        Node newNode = new Node(data);
        if (head == null)
        {
            head = newNode;
            return;
        }
        Node current = head;
        while (current.Next != null)
        {
            current = current.Next;
        }
        current.Next = newNode;
    }

    public void PrintAllNodes()
    {
        Node current = head;
        while (current != null)
        {
            Console.WriteLine(current.Data);
            current = current.Next;
        }
    }
}