Re: [問題] 關於Queue.Count==0的判斷問題

看板C_Sharp作者 (充滿自信與信任)時間12年前 (2011/09/03 01:09), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
有很多種方式可以解單的解決. 直接轉成 int[] 你應該比較好理解, 隨手寫了一下. 1. private void QueueHere(Queue<int> MyQueue) // function QueueHere { int[] MyData = MyQueue.ToArray(); // 將資料轉成 int[] ... ... ... // 變成 array 就比較好做了吧? // 記得 Queue data 不會被 del } 2. private void QueueHere(Queue<int> MyQueue) // function main { int limit = 30; // 你的限制 while (MyQueue.Count >= limit) // Queue 大於30時 迴圈處理 { Process(MyQueue, limit); } if (MyQueue.Count != 0) // Queue 小於30時 特別處理 { Process(MyQueue, MyQueue.Count); } } private void Process(Queue<int> MyQueue, int Quantity) // function process { string SS = ""; while (Quantity > 0) { SS += "Dequeue-> " + MyQueue.Dequeue() + "\n"; // 不用特別改型態 Quantity--; } // SS 要印出來就印吧 } ※ 引述《catmouse520 (快特研替Kimi)》之銘言: : 有個問題一直卡住想請教版上熱心的先進 : 假設我的Queue有100筆 : 我每次要取出30筆 : 1-30 31-60 61-90 91-100 : ^^^^^^當迴圈處理到取出第11筆時 : Queue中沒有資料了會出現問題 : 故我加了一個判斷temp.count==0 : 結果跳出後 : 只印出Start & End這兩行 : 我看不見now peek= : Dequeue-> : 請問我該如何做呢?? : 程式碼如下: : Queue<int> temp = new Queue<int>(); : richTextBox1.AppendText("Start Frequency output" + "\n"); : for (int j = 0; j < 4; j++) : { : if (temp.Count == 0) : { : for (int i = 0; i < 30; i++) : { : richTextBox1.AppendText("now peek= " + Convert.ToString(temp.Peek()) + "\n"); : richTextBox1.AppendText("Dequeue->" + temp.Dequeue() + "\n"); : } : richTextBox1.AppendText("now peek= " + Convert.ToString(temp.Peek()) + "\n"); : } : } : richTextBox1.AppendText("Start Frequency output End" + "\n"); -- ▇▃▂▁ ▁▂▃▇ ▃▆ ▆▃ ╦ ╗█▇▆▃ ▃▅▆▇╔╗ ◣∥◢║ ║ ╦ ╔ ╦╗ ╦ ╔ ╗ █◣▲ ▼▼▼▼ ║ ║ ║ ╠ ║ ║ ║ ◥█◤▲▲█◤ ║ ║ ╩ ╩ ╩ ╝╚ ╝ ψyzelly ╩ ╝▁▂▃▄▄ ▄ ▄▃▂▁╚╝ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.66.207

09/07 13:42, , 1F
感謝MMAXo大大!^^
09/07 13:42, 1F
文章代碼(AID): #1EOGtXOf (C_Sharp)
文章代碼(AID): #1EOGtXOf (C_Sharp)