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;
}
}
}