Orqaga qaytish
Stacklarning yana bir muhim qo'llanilishi bu orqaga qaytishdir. Labirintda to'g'ri yo'lni topishning oddiy misolini ko'rib chiqing. Boshlanish nuqtasidan to maqsadgacha bir qator nuqtalar mavjud. Biz bir nuqtadan boshlaymiz. Yakuniy manzilga erishish uchun bir nechta yo'llar mavjud. Tasodifiy yo'lni tanlaymiz deylik. Muayyan yo'ldan borganimizdan so'ng biz tanlagan yo'l noto'g'ri ekanligini tushunamiz. Shunday qilib, biz bu yo'lning boshiga qaytish yo'lini topishimiz kerak. Bu steklardan foydalanish bilan amalga oshirilishi mumkin. Staklar yordamida biz erishgan nuqtani eslaymiz. Bu nuqtani stekga surish orqali amalga oshiriladi. Agar biz noto'g'ri yo'lga tushib qolgan bo'lsak, biz oxirgi nuqtani stekdan olib tashlashimiz va shu bilan oxirgi nuqtaga qaytishimiz va to'g'ri yo'lni topish uchun izlanishimizni davom ettirishimiz mumkin. Bu orqaga qaytish deb ataladi.
Orqaga qaytish algoritmining prototip namunasi chuqurlikdan birinchi bo'lib qidiruv bo'lib, u belgilangan boshlang'ich cho'qqidan erishish mumkin bo'lgan grafikning barcha cho'qqilarini topadi. Orqaga qaytishning boshqa ilovalari optimallashtirish muammosiga potentsial yechimlarni ko'rsatadigan bo'shliqlar orqali qidirishni o'z ichiga oladi. Branch and bound - bu shunday bo'shliqdagi barcha potentsial echimlarni to'liq izlamasdan, bunday orqaga qaytish qidiruvlarini amalga oshirish usuli.
Vaqt xotirasini boshqarishni kompilyatsiya qilish
Bir qator dasturlash tillari stekga yo'naltirilgan bo'lib, ular asosiy operatsiyalarni (ikkita raqam qo'shish, belgini chop etish) stekdan o'z argumentlarini olish va har qanday qaytarish qiymatlarini stekga qayta joylashtirish kabi belgilaydi. Masalan, PostScript -da qaytaruvchi stek va operandlar stekiga ega, shuningdek, grafik holat stekka va lug'at stekiga ega. Ko'pgina virtual mashinalar stekga yo'naltirilgan, jumladan p-kod mashinasi va Java virtual mashinasi .
Deyarli barcha chaqiruv konventsiyalari — subprogrammalarning o‘z parametrlarini qabul qilish va natijalarni qaytarish usullari — chaqirilayotgan funksiya kontekstiga o‘tish uchun protsedura/funksiyani chaqirish va joylashtirish haqidagi ma’lumotlarni saqlash uchun maxsus stek (“ chaqiruv stek ”)dan foydalanadi. va qo'ng'iroq tugagach, qo'ng'iroq qiluvchi funksiyasini tiklang. Funktsiyalar argumentlarni saqlash va stekdagi qiymatni qaytarish uchun qo'ng'iroq qiluvchi va qo'ng'iroq qiluvchi o'rtasidagi ish vaqti protokoliga amal qiladi. Stacks ichki yoki rekursiv funksiya chaqiruvlarini qo'llab-quvvatlashning muhim usuli hisoblanadi. Ushbu turdagi stek kompilyator tomonidan CALL va RETURN iboralarini (yoki ularning ekvivalentlarini) qo'llab-quvvatlash uchun bevosita foydalaniladi va dasturchi tomonidan to'g'ridan-to'g'ri manipulyatsiya qilinmaydi.
Ba'zi dasturlash tillari protsedura uchun mahalliy bo'lgan ma'lumotlarni saqlash uchun stekdan foydalanadi. Mahalliy ma'lumotlar elementlari uchun joy protsedura kiritilganda stekdan ajratiladi va protsedura tugagandan so'ng ajratiladi. C dasturlash tili odatda shu tarzda amalga oshiriladi. Ma'lumotlar va protsedura qo'ng'iroqlari uchun bir xil stekdan foydalanish muhim xavfsizlik ta'siriga ega (pastga qarang), dasturga jiddiy xavfsizlik xatolarini kiritmaslik uchun dasturchi bilishi kerak.
Dostları ilə paylaş: |