C# Snabbreferens
  • C# snabbreferens
  • Lathund: Skapa projekt
  • Lathund: koda i konsolen
  • Lathund: koda i WPF
  • Kompilering och publicering
  • Externa resurser
  • Grundläggande
    • Datatyper […]
      • String
      • Tuples
      • Enum
    • Fel
    • Typkonvertering
    • Operatorer
    • Boolska satser
    • Konsolen (Console)
    • If-satser
    • Loopar
    • Listor och arrayer
    • Slump (Random)
    • Strings
    • Metoder
    • Använda bibliotek (using)
    • Delegates, events och lambdas
    • Matematik (Math)
    • Vektorer (Numerics)
    • Datum och tid
    • Try-catch och Exception
    • Namngivning
    • Begrepp
    • Reference vs value types
    • Projektstruktur
    • Dotnet i terminalen
  • Filhantering
    • Filsökvägar
    • Läsa och skriva
    • Filer och mappar
    • Open, close, using
    • Serialisering […]
      • JSON-serialisering
      • XML-serialisering
    • Resursfiler
    • Filformat
      • JSON
  • Klasser och objektorientering
    • Översikt objektorientering
    • Lathund för klassdesign
    • Klasser och instanser
    • Struct
    • Public, private och protected
    • Klassdiagram
    • Klassmetoder
    • Konstruktorer
    • Arv
    • Komposition
    • Inkapsling och properties
    • Static
    • Polymorfism […]
      • Virtual, override
    • Generiska klasser
    • Abstract
    • Interface
    • Attribut
  • Annat
    • RayLib […]
      • Raylib setup
      • Fönster i Raylib
      • Grundläggande grafik
      • Geometriska former
      • Bilder och texturer
        • Texture
        • Image
      • Input
      • Text
      • Rectangle
      • Kollisioner
      • Kamera
      • Ljud
      • Raylib-CSharp*
    • MonoGame […]
      • Monogame-projekt*
      • MCGB Editor*
      • Input*
      • Grafik*
      • Kollisioner
      • Ljud*
    • Nätverk och internet […]
      • CRUD, HTTP och REST
      • URL:er och REST
      • RESTful client*
      • Thunder
      • RESTful server (Minimal API)
        • Swagger och OpenAPI
      • RESTful server (Web API) […]
        • Controllers
        • Models/dataklasser
        • Tester med RESTer
    • Linq
      • Linq-metoder
      • Linq-queries
    • Databaser
      • SQLite-kommandon
      • SQLite och VSCode
      • C# och SQLite
      • Entity Framework Core
    • Threading
      • Thread
      • Task
    • Pseudokod och diagram
    • Windows UI
      • WPF
      • XAML*
      • WinUI*
  • Mjukvara
    • Dotnet SDK
    • Visual Studio Code […]
      • Extensions
      • Inställningar
      • Debugging
      • Snabbkommandon
      • Snippets
      • Felsökning
    • Git & GitHub […]
      • Git-begrepp
    • Andra verktyg
  • Tekniker
    • Begränsa input
    • Game states
    • Gå igenom en array (eller lista)
    • Länkade listor och andra strukturer
    • Ta bort saker ur listan man går igenom
    • 2D-spelbräden
    • Timers
  • CONTRIBUTING
Powered by GitBook
On this page
  • Länkade listor
  • Hur det funkar
  • Tvåvägs länkade listor, träd och nätverk
  • Tvåvägs
  • Träd
  • Nätverk

Was this helpful?

  1. Tekniker

Länkade listor och andra strukturer

PreviousGå igenom en array (eller lista)NextTa bort saker ur listan man går igenom

Last updated 4 years ago

Was this helpful?

Länkade listor

Fördelar med en länkad lista jämfört med arrayer:

  • Som en List behöver man inte definiera storleken från början.

  • Det går ganska snabbt att lägga in något nytt i mitten, eller ta bort det.

  • Förstår man länkade listor så blir det väldigt lätt att sedan skapa andra strukturer såsom träd eller nätverk.

Nackdelar:

  • Mycket jobbiga att sortera.

  • Jobbigt att läsa av en specifik position.

Hur det funkar

En länkad lista består av noder. Varje nod innehåller (minst) ett värde samt en pekare till nästa nod. Det finns ingen samling av alla noder någonstans; allt som finns är pekaren från en nod till en annan.

class Node
{
  public int value = 0; // Kan såklart göras generisk för mer flexibilitet.
  public Node nextNode;
}

Program.cs

static void Main(string[] args)
{
  Node firstNode = new Node();
  firstNode.value = 3;
  Node currentNode = firstNode;

  // Lägg till 10 noder till den länkade listan
  for (int i = 0; i < 10; i++)
  {
    firstNode.nextNode = new Node();
    currentNode = firstNode.nextNode;
    currentNode.value = 10 - i;
  }

  // Stoppa in en nod mellan den första och den andra
  Node newNode = new Node();
  newNode.value = 9;
  newNode.nextNode = firstNode.nextNode;
  firstNode.nextNode = newNode;
}

Tvåvägs länkade listor, träd och nätverk

Flera pekare kan peka på samma objekt. Det gör att man kan skapa mer komplexa strukturer.

Tvåvägs

class Node
{
  public int value = 0;
  public Node nextNode;
  public Node prevNode;
}

Träd

class Node
{
  public int value = 0;
  public List<Node> children = new List<Node>();
}

Nätverk

class Node
{
  public int value = 0;
  public List<Node> connections = new List<Node>();
}
En tvåvägs länkad lista