Sobes.tech
Junior

Jakie istnieją struktury danych?

sobes.tech AI

Odpowiedź od AI

Struktury danych dzielą się na dwie główne kategorie:

  1. Liniowe: Elementy są ułożone sekwencyjnie.

    • Tablica (Array): Stały rozmiar, dostęp bezpośredni przez indeks.
      int[] numbers = { 1, 2, 3, 4, 5 }; // Przykład deklaracji
      
    • Lista (List): Dynamiczny rozmiar, elementy są dodawane i usuwane.
      System.Collections.Generic.List<string> names = new System.Collections.Generic.List<string>();
      names.Add("Alice");
      names.Add("Bob");
      
    • Lista powiązana (Linked List): Elementy (węzły) zawierają odwołanie do następnego (i ewentualnie poprzedniego).
      • Jednokierunkowa
      • Dwukierunkowa
      System.Collections.Generic.LinkedList<char> letters = new System.Collections.Generic.LinkedList<char>();
      letters.AddLast('A');
      letters.AddLast('B');
      
    • Stos (Stack): Ostatni weszło, pierwszy wyszło (LIFO).
      System.Collections.Generic.Stack<int> stack = new System.Collections.Generic.Stack<int>();
      stack.Push(10); // Dodaje element na szczyt
      int item = stack.Pop(); // Usuwa i zwraca element ze szczytu
      
    • Kolejka (Queue): Pierwszy weszło, pierwszy wyszło (FIFO).
      System.Collections.Generic.Queue<string> queue = new System.Collections.Generic.Queue<string>();
      queue.Enqueue("Zadanie 1"); // Dodaje element na koniec
      string task = queue.Dequeue(); // Usuwa i zwraca element z początku
      
  2. Nieliniowe: Elementy nie są ułożone sekwencyjnie.

    • Drzewo (Tree): Struktura hierarchiczna z korzeniem i potomkami.
      • Drzewo binarne
      • Drzewo B
      • Drzewo czerwono-czarne
      • Drzewo AVL
    • Graf (Graph): Zbiór wierzchołków (węzłów) i krawędzi (połączeń) między nimi.
      • Skierowany (Directed)
      • Nieskierowany (Undirected)
    • Tablica haszująca (Hash Table) / Słownik (Dictionary): Przechowują pary klucz-wartość, używając funkcji hash do szybkiego wyszukiwania.
      System.Collections.Generic.Dictionary<string, int> ageByName = new System.Collections.Generic.Dictionary<string, int>();
      ageByName.Add("Charlie", 30);
      int age = ageByName["Charlie"]; // Szybki dostęp po kluczu
      
    • Zbiór (Set): Kolekcja unikalnych elementów bez określonego porządku.
      System.Collections.Generic.HashSet<int> uniqueNumbers = new System.Collections.Generic.HashSet<int>();
      uniqueNumbers.Add(5);
      uniqueNumbers.Add(10);
      uniqueNumbers.Add(5); // Duplikat nie zostanie dodany