Stack vs Heap
Stack არის მოწესრიგებული სია, რომელშიც სიის ელემენტების ჩასმა და წაშლა შესაძლებელია მხოლოდ ერთ ბოლოში, რომელსაც ეწოდება ზედა. ამ მიზეზის გამო, სტეკი განიხილება, როგორც უკანასკნელი პირველი გამოსვლის (LIFO) მონაცემთა სტრუქტურა. Heap არის სპეციალური მონაცემთა სტრუქტურა, რომელიც დაფუძნებულია ხეებზე და ის აკმაყოფილებს სპეციალურ თვისებას, რომელსაც ეწოდება გროვის თვისება. ასევე, გროვა არის სრული ხე, რაც ნიშნავს, რომ ხის ფოთლებს შორის არ არის ხარვეზები, ანუ სრულ ხეში ყველა დონე ივსება ხეზე ახალი დონის დამატებამდე და მოცემულ დონეზე კვანძები ივსება. მარცხნიდან მარჯვნივ.
რა არის Stack?
როგორც უკვე აღვნიშნეთ, დასტა არის მონაცემთა სტრუქტურა, რომელშიც ელემენტები ემატება და ამოღებულია მხოლოდ ერთი ბოლოდან, რომელსაც ზედა ეწოდება.სტეკები იძლევა მხოლოდ ორ ფუნდამენტურ ოპერაციას, სახელწოდებით push და pop. ბიძგის ოპერაცია ამატებს ახალ ელემენტს სტეკის ზედა ნაწილში. პოპ ოპერაცია შლის ელემენტს სტეკის ზემოდან. თუ სტეკი უკვე სავსეა, როდესაც შესრულდება ბიძგის ოპერაცია, იგი განიხილება, როგორც სტეკის გადადინება. თუ პოპ ოპერაცია შესრულებულია უკვე ცარიელ სტეკზე, ის განიხილება, როგორც სტეკის ქვეflow. ოპერაციების მცირე რაოდენობის გამო, რომლებიც შეიძლება შესრულდეს სტეკზე, იგი განიხილება როგორც შეზღუდული მონაცემთა სტრუქტურა. გარდა ამისა, იმის მიხედვით, თუ როგორ არის განსაზღვრული push და pop ოპერაციები, ცხადია, რომ ელემენტები, რომლებიც ბოლოს დამატებულია სტეკში, პირველ რიგში გამოდიან სტეკიდან. ამიტომ სტეკი განიხილება, როგორც LIFO მონაცემთა სტრუქტურა.
რა არის Heap?
როგორც უკვე აღვნიშნეთ, heap არის სრული ხე, რომელიც აკმაყოფილებს გროვის თვისებას. Heap თვისება აცხადებს, რომ თუ y არის x-ის შვილობილი კვანძი, მაშინ x კვანძში შენახული მნიშვნელობა უნდა იყოს მეტი ან ტოლი y კვანძში შენახულ მნიშვნელობაზე (ე.ი. მნიშვნელობა(x) ≥ მნიშვნელობა(y)). ეს თვისება გულისხმობს, რომ ყველაზე დიდი მნიშვნელობის მქონე კვანძი ყოველთვის განთავსდება ძირში. ამ თვისებით აგებულ გროვას მაქს-გროვა ეწოდება. არსებობს გროვის თვისების კიდევ ერთი ვარიაცია, რომელიც ამტკიცებს ამის საპირისპიროს. (ანუ მნიშვნელობა(x) ≤ მნიშვნელობა(y)). ეს გულისხმობს, რომ ყველაზე მცირე მნიშვნელობის მქონე კვანძი ყოველთვის განთავსდება ფესვთან, ამგვარად უწოდებენ min-heap. არსებობს ოპერაციების ფართო დიაპაზონი, რომლებიც შესრულებულია გროვებზე, როგორიცაა მინიმალური (მინიმურ გროვებში) ან მაქსიმუმის (მაქს-გროვებში), მინიმუმის წაშლა (მინ-გროვებში) ან მაქსიმუმ (მაქს-გროვაში), გაზრდა (მაქს. -გროვა) ან კლებადი (მინ-გროვაში) გასაღები და ა.შ.
რა განსხვავებაა Stack-სა და Heap-ს შორის?
მთავარი განსხვავება სტეკებსა და გროვებს შორის არის ის, რომ სანამ სტეკი მონაცემთა ხაზოვანი სტრუქტურაა, გროვა არის მონაცემთა არაწრფივი სტრუქტურა. Stack არის მოწესრიგებული სია, რომელიც მიჰყვება LIFO თვისებას, ხოლო heap არის სრული ხე, რომელიც მიჰყვება heap თვისებას. გარდა ამისა, სტეკი არის შეზღუდული მონაცემთა სტრუქტურა, რომელიც მხარს უჭერს მხოლოდ შეზღუდული რაოდენობის ოპერაციებს, როგორიცაა push და pop, ხოლო heap მხარს უჭერს ოპერაციების ფართო სპექტრს, როგორიცაა მინიმალური ან მაქსიმალურის პოვნა და წაშლა, გასაღების გაზრდა ან შემცირება და შერწყმა.