作者MMAXo (充满自信与信任)
看板C_Sharp
标题Re: [问题] 关於Queue.Count==0的判断问题
时间Sat Sep 3 01:09:49 2011
有很多种方式可以解单的解决.
直接转成 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
1F:推 catmouse520:感谢MMAXo大大!^^ 09/07 13:42