11/01/2024
STACK DATA STRUCTURE IN JAVASCRIPT
---------------------------------------------------------------------
Javascript code တွေ နောက်ကွယ်မှာဘယ်လိုအလုပ်လုပ်လဲဆိုတာ သိဖို့ဆိုရင် event loop ကိုအရင်သိဖို့လိုအပ်ပါတယ်
Event loop ကို javascript interview တွေမှာအမေးများပါတယ် javascript developer တစ်ယောက်ဖြစ်ဖို့ကြိုးစားနေတဲ့ သူဆိုရင် event loop အကြောင်းကိုသေချာသိထားသင့်ပါတယ်
Event loop ကို သိဖို့ဆိုရင် အရင်ဆုံး (stack,heap queue ,web apis)တွေကိုသိဖို့လိုပါတယ် အဲ့တာကြောင့် ဒီ article မှာ stack အကြောင်းကိုအရင်ပြောသွားမှာပါ
⭐ Data structure မှာ linear data structure နဲ့ non-linear data structure ဆိုပြီး နှစ်မျိုးရှိပါတယ်
⭐
Stack က linear data structure တစ်မျိုးပါ
Linear data structure ဆိုတာ store လုပ်လိုက်တဲ့ data တွေက အစဉ်လိုက်ဖြစ်တာမျိုး၊ တစ်ခုနဲ့တစ်ခုနီးနီကပ်ကပ်ရှိတာမျိုးက်ိုပြောချင်တာပါ
⭐ Javascript code တွေကို stack ပေါ်တင် run ပါတယ်
⭐ သူရဲ့ order က LIFO(last in first out)or FILO(first in last out) ပါ
ပြောချင်တာ က နောက်ဆုံးမှ ၀င်လာတဲ့
ကောင်က အရင်အလုပ်လုပ်မယ်
ပထဆုံး၀င်ရင် အောက်ဆုံးရောက်သွားပါတယ်
Javascript မှာ build in stack method ရယ်လို့ မရှိပါဘူး အဲ့တာကြောင့် stack အကြောင်းပြောရင် array နဲ့ပဲ ဥပမာပြကြရပါတယ်
ဒါ့ပေမယ့် stack မှာ က method နှစ်ခုပဲ ရှိပါတယ် အဲ့တာက stack ထဲကို data ထည့်တာ(push)ရယ် ဖျက်တာ(pop)ရယ်ပါ
⭐ data Insert လုပ်ရင် stack ရဲ့ အပေါ်ဆုံးမှာပဲ ထည့်ရမှာပါ delete လုပ်ရင် လည်းအပေါ်ဆုံးကကောင်ပဲ ဖျက်လို့ပါရတယ်
# အောက်က ပုံနဲ့တွဲကြည့်ပေးပါ
let stack = [ ]
stack.push(1);
stack ထဲ 1 ဆိုတဲ့ element တစ်ခု၀င်သွားပါပြီ
stack.push(2);
console.log(stack); #1,2
stack ထဲ element နှစ်ခုရောက်သွားပါပြီ
3,4,5 ထပ်ထည့်ကြည့်ပါမယ်
⭐ နောက်ဆုံး push တဲ့ကောင်က stack ရဲ့အပေါ် ဆုံးရောက်သွားပါတယ်
5
4
3
2
1
ဆိုပြီးဖြစ်သွားမှာပါ
⭐ ပြန်ဖျက်ချင်ရင် pop နဲ့ အပေါ်ဆုံး element ကိုဖျက်လို့ရပါတယ် အပေါ်ကကောင်ပျက်သွားမှ အောက်က ကောင်ကို ဆက်လုပ်လို့ရပါတယ်
ဒါဆိုရင် ကျွန်တော်တို့ javascript code တွေနဲ့စဉ်းစားကြည့်ရအောင်ပါ javascript function တွေကို stack ပေါ်တင် run တဲ့အခါ
ဥပမာ -
hello( )
world( )
ဆိုပြီး function နှစ်ခုကိုခေါ်ထားရင် ပထမတွေ့တဲ့ကောင်ကို STACK ထဲကို push လုပ်လိုက်တယ် run ပြီးရင် pop ပြန်လုပ်တယ်
pop လုပ်ပြီး stack က empty ဖြစ်သွားမှ နောက် world ကို push လုပ်ပြီး world ကို run တာပါ
ဒါ က function တစ်ချင်းစီပါ
⭐ တစ်ကယ်လို့ function hello ထဲမှာ world ကိုထည့် run မယ်ဆိုရင် ရော?
function hello(){
world()
}
hello()
hello ကိုခေါ်ထားတာဖြစ်တဲ့အတွက် stack ပေါ်မှာ hello ရောက်သွားပါတယ် hello ကို run တဲ့ အခါ world ကို ခေါ်ထားတာကိုသွားတွေ့ပါတယ် အဲ့တာကြောင့် stack ပေါ်မှာ world ကို push လိုက်ပါတယ်
STACK က ခုလိုဖြစ်သွားမှာပါ
world ( )
hello( )
နောက်ဆုံးမှ push တဲ့ကောင်က အပေါ်ဆုံးရောက်သွားမှာပါ
Array အနေနဲ့ မြင်ကြည့်ရင်
stack = [hello,world]
⭐ Stack က world ကို အရင်run ပါတယ်
သူ့ရဲ့order က LIFO နောက်ဆုံး၀င်တဲ့ကောင်ကို အရင်အလုပ်လုပ်တဲ့အတွက်ကြောင့်ပါ
world ကို run ပြီးရင် ပြန်ဖျက်တယ် ပြီးမှသူ့ရဲ့အောက်က hello ကိုလုပ်ပါတယ်
⭐ Javascript က single thread ဖြစ်တဲ့အတွက်ကြောင့် တစ်ခုပြီးမှ တစ်ခု လုပ်တာပါ ကျော်ပြီးမလုပ်ပါဘူး။အဲ့တာကြောင့် ကြားဖြတ်အလုပ်လုပ်စေချင်တဲ့ event handler က callback function တွေ ဘယ်လို run လဲဆိုရင် Web apis တွေ queue နဲ့ တွဲဖက်အလုပ်လုပ်ပုံကိုသိဖို့လိုအပ်ပါတယ်
နောက် article မှာ queue အကြောင်းကို ဆက်လက်ပြောပြသွားပါမယ်ခင်ဗျာ......