Sobes.tech
Intern

Ի՞նչ տվյալների կառուցվածքներ կան:

sobes.tech AI

Պատասխան AI-ից

Ահա հիմնական տվյալների կառուցվածքների ցանկը՝

Առաջինային (Primitive):

  • Թիվեր (Integer)
  • Տարածական թվեր (Floating-point numbers)
  • Բուլյան արժեքներ (Boolean)
  • Նիշեր (Character)

Աբստրակտ (Abstract):

  • Արrey (Array): Հերթական հավաքածու միատեսակ տարրերից, հասանելիություն ինդեքսով՝ կայուն ժամանակով:
  • Կապակցված ցանկ (Linked List): Կապակցված հանգույցների հավաքածու, որոնցից յուրաքանչյուրը պարունակում է տվյալներ և հղում հաջորդ հանգույցին։ Էֆեկտիվ է սկզբից/վերջից ավելացնելը/հեռացումը, ինդեքսով հասանելիությունը՝ $O(n)$:
    • Միակողմանի կապակցված ցանկ (Singly Linked List)
    • Երկկողմանի կապակցված ցանկ (Doubly Linked List)
    • Շրջանաձև կապակցված ցանկ (Circular Linked List)
  • Ստակ (Stack): Տվյալների կառուցվածք LIFO (Last-In, First-Out): Օպերացիաներ՝ push (ավելացնել), pop (հեռացնել), peek (վերևի տարրին դիտել):
    struct Stack<Element> {
        private var elements: [Element] = []
    
        mutating func push(_ element: Element) {
            elements.append(element)
        }
    
        mutating func pop() -> Element? {
            return elements.popLast()
        }
    
        func peek() -> Element? {
            return elements.last
        }
    
        var isEmpty: Bool {
            return elements.isEmpty
        }
    }
    
  • Կատար (Queue): Տվյալների FIFO կառուցվածք: Օպերացիաներ՝ enqueue (ավելացնել), dequeue (հեռացնել), peek (առաջին տարրին դիտել):
    struct Queue<Element> {
        private var elements: [Element] = []
    
        mutating func enqueue(_ element: Element) {
            elements.append(element)
        }
    
        mutating func dequeue() -> Element? {
            guard !elements.isEmpty else { return nil }
            return elements.removeFirst()
        }
    
        func peek() -> Element? {
            return elements.first
        }
    
        var isEmpty: Bool {
            return elements.isEmpty
        }
    }
    
  • Հեշ-թաբլ (Hash Table) / Լեզվական (Dictionary) / Ասոցիատիվ զանգված (Associative Array): Զույգեր "կլուչ-արժեք" հավաքածու, որը թույլ է տալիս արդյունավետ որոնում, ավելացում և հեռացում՝ օգտագործելով հեշ-ֆունկցիա:
    var dictionary = [String: Any]() // Swift-ում օրինակ բառարան
    dictionary["key1"] = "value1"
    let value = dictionary["key1"]
    
  • Համակենտրոնություն (Set): Անցանկացած հավաքածու՝ եզակի տարրերով։ Օպերացիաներ՝ ավելացնել, հեռացնել, ստուգել առկայությունը, միավորում, հատում, տարբերություն:
    var set: Set<Int> = [1, 2, 3] // Swift-ում օրինակ հավաքածու
    set.insert(4)
    let containsTwo = set.contains(2)
    
  • Անվանում (Tree): Հիերարխիկ կառուցվածք՝ հանգույցներից, որոնք կապված են ճյուղերով։ Ունի արմատային հանգույց և ենթահանգույցներ:
    • Երկբառ (Binary Tree)
    • Երկբառ որոնողական ծառ (Binary Search Tree - BST)
    • Բալանսավորված երկբառ (Balanced Binary Tree) - AVL, կարմիր-սև ծառ
    • B-ծառ (B-Tree)
  • Գրաֆ (Graph): Վերևների (հանգույցների) և ճյուղերի (կապերի) հավաքածու, որոնք կապում են վերևները։ Կարող է լինել ուղղորդված կամ ուղղորդված չլինող, ծանրաբեռնված կամ առանց ծանրաբեռնված:

Այս կառուցվածքների ըմբռնումը կարևոր է արդյունավետ և մասշտաբային կոդ գրելու համար։ Ճիշտ տվյալների կառուցվածքի ընտրությունը կախված է գործողությունների կատարողականության պահանջներից (որոնում, ավելացում, հեռացում) և տվյալների բնույթից։