လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP မှအကောင်အထည်ဖော်မှုအမျိုးအစားတန်းတူလုပ်ဆောင်ချက် - Queue Operations ကိုနှစ်ခု stack နှစ်ခုဖြင့်အကောင်းဆုံးနည်းလမ်းများပြုလုပ်ရန်ထိရောက်သောနည်းလမ်း

PHP မှအကောင်အထည်ဖော်မှုအမျိုးအစားတန်းတူလုပ်ဆောင်ချက် - Queue Operations ကိုနှစ်ခု stack နှစ်ခုဖြင့်အကောင်းဆုံးနည်းလမ်းများပြုလုပ်ရန်ထိရောက်သောနည်းလမ်း

gitbox 2025-07-23

နိဒါန်း

Queue များသည်ပထမ ဦး ဆုံး - ပထမ ဦး ဆုံးထွက်ပေါက် (FIFO) ၏နိယာမကိုလိုက်နာသောကျယ်ပြန့်သောအသုံးပြုသောဒေတာတည်ဆောက်ပုံများဖြစ်သည်။ PHP မှ arrays သည် Queuing function များကိုအကောင်အထည်ဖော်နိုင်သော်လည်း arrays ၏တိုက်ရိုက်ခြယ်လှယ်ခြင်းကထိရောက်မှုလျှော့ချနိုင်သည်။ ဤဆောင်းပါးသည်ထိရောက်သောတန်းစီစစ်ဆင်ရေးလုပ်ငန်းများအောင်မြင်ရန်နှင့်အစီအစဉ်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် stack stark နှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါမည်။

stack ၏အခြေခံအယူအဆ

stack သည်နောက်ဆုံးပေါ် - ပထမ ဦး ဆုံးထွက်ပေါက် (lifo) နှင့်အတူဒေတာဖွဲ့စည်းပုံနှင့်၎င်း၏အဓိကစစ်ဆင်ရေးများတွန်းအားပေးခြင်းနှင့် popping ပါဝင်သည်။ Element ကို stack ထိပ်ပေါ်သို့တွန်းတင်ပြီး element ကို stack ၏ထိပ်ပေါ်သို့ဖယ်ရှားပါ။

နှစ်ခု stack များအတွက်တန်းစီအကောင်အထည်ဖော်ဘို့စိတ်ကူးများ

Queue ကို Stark နှစ်ခုမှတဆင့်အကောင်အထည်ဖော်သည်။ တစ်ခုမှာ Element Enqueue အတွက်တာဝန်ရှိကြောင်းနှင့်အခြားတစ်ခုမှာ output stack as element ကို dequeue အတွက်တာဝန်ရှိသည်။ output stack ဗလာဖြစ်သည့်အခါ input stack ရှိ Element များသည်တစ်ခုကတစ်ခုမှတစ်ခုဖြစ်ပြီး output ကို point များထဲသို့တွန်းပို့လိုက်သည်။

တန်းစီစစ်ဆင်ရေးသို့ဆက်သွယ်ပါ

Entry စစ်ဆင်ရေးအတော်လေးရိုးရှင်းပါတယ်, element ကို input stack ထဲသို့တွန်းပါ။

 class Queue {
    private $inputStack = [];
    private $outputStack = [];

    public function enqueue($item) {
        array_push($this->inputStack, $item);
    }
}

ထွက်ခွာစစ်ဆင်ရေး

အဆိုပါတန်းစီစစ်ဆင်ရေးပထမ ဦး ဆုံး output stack ဗလာရှိမရှိဆုံးဖြတ်သည်။ အကယ်. ၎င်းသည်ဗလာဖြစ်လျှင် input stack ၏ element အားလုံးကို pop up လုပ်ပြီး output stack မှ၎င်းတို့ကို pop up လုပ်ပါ။ အကယ်. ၎င်းသည်ဗလာမဟုတ်လျှင် output stack မှ element များကိုတိုက်ရိုက်ပေါ်လာပါ။

 public function dequeue() {
    if (empty($this->outputStack)) {
        while (!empty($this->inputStack)) {
            array_push($this->outputStack, array_pop($this->inputStack));
        }
    }
    if (!empty($this->outputStack)) {
        return array_pop($this->outputStack);
    }
    return null;
}

နမူနာကုဒ်

အောက်ပါဥပမာသည် stack နှစ်ခု သုံး. တန်းစီ၏အခြေခံစစ်ဆင်ရေးကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုပြသသည်။

 $queue = new Queue();
$queue->enqueue(1);
$queue->enqueue(2);
$queue->enqueue(3);
echo $queue->dequeue(); // ထုတ်လုပ်ခြင်း1
echo $queue->dequeue(); // ထုတ်လုပ်ခြင်း2
echo $queue->dequeue(); // ထုတ်လုပ်ခြင်း3

အကျဉ်းချုပ်

Queue အကောင်အထည်ဖော်ရန် stack နှစ်ခုကိုအသုံးပြုခြင်းသည်မကြာခဏခင်းကျင်းလှုပ်ရှားမှုကြောင့်ဖြစ်ပေါ်လာသောစွမ်းဆောင်ချက်ဆိုင်ရာပြ problems နာများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ အဖွဲ့သို့ပူးပေါင်းလုပ်ဆောင်ခြင်းသည်ရိုးရှင်းပြီးအကျိုးရှိရှိဖြစ်သည်။ နောက်ထပ် stack space လိုအပ်သော်လည်း Queue လုပ်ငန်းများ၏အလုံးစုံကွပ်မျက်မှုစွမ်းဆောင်ရည်ကိုတိုးတက်ကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။