Sobes.tech
Junior

Kokios duomenų struktūros egzistuoja?

sobes.tech AI

Atsakymas iš AI

Duomenų struktūros skirstomos į dvi pagrindines kategorijas:

  1. Lininės: Elementai išdėstyti sekos tvarka.

    • Masivas (Array): Fiksuoto dydžio, tiesioginis prieigos būdas pagal indeksą.
      int[] numbers = { 1, 2, 3, 4, 5 }; // Pavyzdys deklaracijos
      
    • Sąrašas (List): Dinaminio dydžio, elementai pridedami ir pašalinami.
      System.Collections.Generic.List<string> names = new System.Collections.Generic.List<string>();
      names.Add("Alice");
      names.Add("Bob");
      
    • Susijęs sąrašas (Linked List): Elementai (mazgai) turi nuorodą į sekantį (ir galbūt ankstesnį) elementą.
      • Vienpusiai
      • Dvipusiai
      System.Collections.Generic.LinkedList<char> letters = new System.Collections.Generic.LinkedList<char>();
      letters.AddLast('A');
      letters.AddLast('B');
      
    • ** Stekas (Stack)**: Paskutinis atėjo - pirmas išeina (LIFO).
      System.Collections.Generic.Stack<int> stack = new System.Collections.Generic.Stack<int>();
      stack.Push(10); // Prideda elementą į viršų
      int item = stack.Pop(); // Pašalina ir grąžina elementą iš viršaus
      
    • Eilė (Queue): Pirmas atėjo - pirmas išeina (FIFO).
      System.Collections.Generic.Queue<string> queue = new System.Collections.Generic.Queue<string>();
      queue.Enqueue("Task 1"); // Prideda elementą į galą
      string task = queue.Dequeue(); // Pašalina ir grąžina elementą iš pradžios
      
  2. Nelinearės: Elementai nėra išdėstyti sekos tvarka.

    • Medis (Tree): Hierarchinė struktūra su šaknimi ir palikuonimis.
      • Dviejų krypčių medis
      • B-medžio
      • Raudonai juodas medis
      • AVL medis
    • Tinklas (Graph): Vertsnių (mazgų) ir briaunų (ryšių) rinkinys.
      • Kryptinis (Directed)
      • Nekryptinis (Undirected)
    • Hash lentelė (Hash Table) / Žodynas (Dictionary): Laiko paieškai naudojama raktas-reikšmė pora.
      System.Collections.Generic.Dictionary<string, int> ageByName = new System.Collections.Generic.Dictionary<string, int>();
      ageByName.Add("Charlie", 30);
      int age = ageByName["Charlie"]; // Greita prieiga pagal raktą
      
    • ** Rinkinys (Set)**: Unikalūs elementai be nustatyto tvarkos.
      System.Collections.Generic.HashSet<int> uniqueNumbers = new System.Collections.Generic.HashSet<int>();
      uniqueNumbers.Add(5);
      uniqueNumbers.Add(10);
      uniqueNumbers.Add(5); // Dublikatas nebus pridėtas