Стек: Засвар хоорондын ялгаа

Content deleted Content added
No edit summary
No edit summary
Мөр 4:
[[Компьютерийн шинжлэх ухаанд]], '''стек''' (stack) нь онцгой үүрэгтэй [[өгөгдөлийн бүтэцийн төрөл]] буюу цуглуулга юм. Стек нь санах ойд байрлах өгөгдлийг зохион байгуулах нэгэн арга бөгөөд хязгаарлагдмал хандалт бүхий өгөгдлийн бүтцийн нэг бол стек юм. Стек нь top(орой), button(ёроол) -той. Стек нь pop(элемент авах) ба push( элемент хийх) гэсэн үндсэн үйлдэлүүдээс гадна бусад туслах функцуудтэй шугаман бүтэц бөгөөд эдгээр үйлдлүүдийг стекийн орой гэх нэг төгсгөлд гүйцэтгэдэг. Өөрөөр хэлбэл стекийн орой дахь хамгийн сүүлд орсон элемент эхэлж гарах зарчмаар ажиладаг.
 
Стек нь өгөгдөл хийх ба гаргаж авах гэсэн 2 үйлдэл бүхий шугаман бүтэц бөгөөд эдгээр үйлдлүүдийг стекийн орой гэх зөвхөн нэг төгсгөлд гүйцэтгэдэг. Өөрөөр хэлбэл стекийн орой дахь хамгийн сүүлд орсон элемент нь хамгийн түрүүнд гарах зарчмаар ажилладаг. Иймээс стекийг сүүлд орсон нь эхэлж гарах (LIFO last in first out) жагсаалт гэж бас нэрлэдэг. Стек нь рекурсив програмчлалын үндэс юм. Бидний хэрэглэж буй компьютер бүр стектэй байдаг. Өөрөөр хэлбэл дахин шинэ стек хийх шаардлага үүсдэггүй
Стекийг хамгийн энгийнээр сав гэж ойлгож болно. Бид савны дээрээс нь ямар нэгэн зүйлийг нэмж дээрээс нь хийсэн зүйлээ авдаг. Яг үүнтэй адилаар стек нь багцын pop(орой) гэж нэрлэгдэх нэг л талаас нь нэмдэг, устгадаг өгөгдлийн хийсвэр төрөл юм.
• Ассемблер хэлээр push, pop командыг бичихэд стекэд өгөгдөл нэмж, хасах боломжтой.
 
Стект хамгийн сүүлд орсон элемент хамгийн эхэнд гардаг учраас Last in First out буюу FIFO өгөгдлийн бүтэц гэж бас нэрлэдэг.
Стекийн шаардлага:
Хэдийгээр стек нь маш хязгаарлагдмал үйлдэлтэй боловч компьютерийн программ хангамжид чухал үүрэгтэй өгөгдлийн бүтэц юм.
Хэдийгээр стек нь маш хязгаарлагдмал үйлдэлтэй боловч компьютерийн програмчлалд чухал үүрэгтэй өгөгдлийн бүтцүүдийн нэг юм. Тухайлбал ямар нэг ажлын явцад өөр зүйл хийхээр түр хойшлуулах, эсвэл програм бүхэлдээ ийм зарчмаар ажиллах зэрэг олон алгоритмд стек үндсэн үүрэг гүйцэтгэнэ. Жишээ нь CALL, RETURN зэрэг функцэд стекийг ашигладаг байна.
Стекийг массив ашиглан нэвтрүүлэх
алгоритмд стек үндсэн үүрэг гүйцэтгэнэ. Жишээ нь CALL, RETURN зэрэг функцэд стекийг ашигладаг байна.
Стекийг олон янзын аргаар нэвтрүүлж болох боловч ихэвчлэн шугаман массив, эсвэл нэг холбоост жагсаалт ашигладаг. Массив ашиглах стекийг ихэвчлэн гараар тодорхойлж өгдөг. Дараах Stack классын зарлалтаар MaxSize хэмжээтэй stack массив, стекийн оройг тодорхойлох top хувьсагч болон стекд элемент хийх push(), стекээс элемэнт авах pop() функц бусад туслах функцүүдийн хамт тодорхойллоо. Stack массивыг заагчаар тодорхойлсноор динамик ойгоос new операторын тусламжтайгаар MaxSize хэмжээтэй зайг Stack классын обьект зарлах үед нөөцлөн авна. Энэ нь хэдийгээр заагч ашиглаж байгаа боловч хувиарлалт хийснээс хойш түүний хэмжээ MaxSize-аас хэтрэхгүй тул статикаар тодорхойлогдож байна.
 
 
Line 39 ⟶ 40:
isempty(init()) = true
isempty(push(i, s)) = false
 
 
Стек
Стек нь өгөгдөл хийх ба гаргаж авах гэсэн 2 үйлдэл бүхий шугаман бүтэц бөгөөд эдгээр үйлдлүүдийг стекийн орой гэх зөвхөн нэг төгсгөлд гүйцэтгэдэг. Өөрөөр хэлбэл стекийн орой дахь хамгийн сүүлд орсон элемент нь хамгийн түрүүнд гарах зарчмаар ажилладаг. Иймээс стекийг сүүлд орсон нь эхэлж гарах (LIFO last in first out) жагсаалт гэж бас нэрлэдэг. Стек нь рекурсив програмчлалын үндэс юм. Бидний хэрэглэж буй компьютер бүр стектэй байдаг. Өөрөөр хэлбэл дахин шинэ стек хийх шаардлага үүсдэггүй
• Ассемблер хэлээр push, pop командыг бичихэд стекэд өгөгдөл нэмж, хасах боломжтой.
Стекийн шаардлага:
Хэдийгээр стек нь маш хязгаарлагдмал үйлдэлтэй боловч компьютерийн програмчлалд чухал үүрэгтэй өгөгдлийн бүтцүүдийн нэг юм. Тухайлбал ямар нэг ажлын явцад өөр зүйл хийхээр түр хойшлуулах, эсвэл програм бүхэлдээ ийм зарчмаар ажиллах зэрэг олон алгоритмд стек үндсэн үүрэг гүйцэтгэнэ. Жишээ нь CALL, RETURN зэрэг функцэд стекийг ашигладаг байна.
Стекийг массив ашиглан нэвтрүүлэх
Стекийг олон янзын аргаар нэвтрүүлж болох боловч ихэвчлэн шугаман массив, эсвэл нэг холбоост жагсаалт ашигладаг. Массив ашиглах стекийг ихэвчлэн гараар тодорхойлж өгдөг. Дараах Stack классын зарлалтаар MaxSize хэмжээтэй stack массив, стекийн оройг тодорхойлох top хувьсагч болон стекд элемент хийх push(), стекээс элемэнт авах pop() функц бусад туслах функцүүдийн хамт тодорхойллоо. Stack массивыг заагчаар тодорхойлсноор динамик ойгоос new операторын тусламжтайгаар MaxSize хэмжээтэй зайг Stack классын обьект зарлах үед нөөцлөн авна. Энэ нь хэдийгээр заагч ашиглаж байгаа боловч хувиарлалт хийснээс хойш түүний хэмжээ MaxSize-аас хэтрэхгүй тул статикаар тодорхойлогдож байна.