/// <summary>
/// 使用栈实现队列
/// </summary>
public Stack<int> stackIn = new Stack<int>();//存储数据时使用的栈
public Stack<int> stackOut = new Stack<int>();//读取数据时使用的栈
/// <summary>
/// 将数据压入到存储栈中
/// </summary>
/// <param name="num"></param>
public void push(int num)
{
stackIn.Push(num);
}
/// <summary>
/// 返回值时从读取栈中返回
/// 当读取栈中值为空时将存储栈中的值压入到读取栈中
/// 只有当读取栈中为空时进行两个栈数据的交换,保证数据读取时的顺序
/// </summary>
/// <returns></returns>
public int peek()
{
if (stackOut.Count == 0)
TransferStack();
return stackOut.Peek();
}
/// <summary>
/// 移除读取栈中的值
/// </summary>
/// <returns></returns>
public int pop()
{
if (stackOut.Count == 0)
TransferStack();
return stackOut.Pop();
}
/// <summary>
/// 判断是否为空
/// </summary>
/// <returns></returns>
public bool empty()
{
return stackIn.Count == 0 && stackOut.Count == 0;
}
/// <summary>
/// 当读取栈为空时交换栈中的数据
/// 两次栈的压入保证数据的正确顺序
/// </summary>
private void TransferStack()
{
while (stackIn.Count != 0)
{
stackOut.Push(stackIn.Pop());
}
}
使用栈实现队列功能
最新推荐文章于 2023-05-30 11:31:25 发布