bool Pop(ref int value)
{
if (m_stack2.Count > 0)
{
value = m_stack2.Pop();
return true;
}
while (m_stack1.Count > 0)
{
m_stack2.Push(m_stack1.Pop());
}
if (m_stack2.Count > 0)
{
value = m_stack2.Pop();
return true;
}
return false;
}
void Push(int value)
{
if (m_stack2.Count == 0 && m_stack1.Count == 0)
{
m_stack2.Push(value);
}
else
{
m_stack1.Push(value);
}
}
bool Pop(ref int value)
{
if (m_queue1.Count == 1 && m_queue2.Count == 0)
{
value = m_queue1.Dequeue();
return true;
}
else if (m_queue1.Count == 0 && m_queue2.Count == 1)
{
value = m_queue2.Dequeue();
return true;
}
else if (m_queue1.Count > 1 && m_queue2.Count == 0)
{
while (m_queue1.Count > 1)
{
m_queue2.Enqueue(m_queue1.Dequeue());
}
value = m_queue1.Dequeue();
return true;
}
else if (m_queue1.Count == 0 && m_queue2.Count > 1)
{
while (m_queue2.Count > 1)
{
m_queue1.Enqueue(m_queue2.Dequeue());
}
value = m_queue2.Dequeue();
return true;
}
return false;
}
void Push(int value)
{
if (m_queue1.Count >= 0 && m_queue2.Count == 0)
{
m_queue1.Enqueue(value);
}
else if (m_queue1.Count == 0 && m_queue2.Count > 0)
{
m_queue2.Enqueue(value);
}
}
https://github.com/luoyikun/UnityForTest Stack2Queue场景