LeetCode刷题--点滴记录007
Posted 鲁棒最小二乘支持向量机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题--点滴记录007相关的知识,希望对你有一定的参考价值。
7. 剑指 Offer 09. 用两个栈实现队列
要求
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
解题
C++版本
#include <iostream>
using namespace std;
#include <stack>
class CQueue
public:
stack<int> A;
stack<int> B;
CQueue()
void appendTail(int value)
A.push(value); //往栈A插入数据
int deleteHead()
if (!B.empty())
int tmp = B.top();
B.pop();
return tmp;
if (A.empty())
return -1;
while (!A.empty())
int tmp = A.top();
A.pop();
B.push(tmp); //栈B内加入从栈A删除的数据
int tmp = B.top();
B.pop();
return tmp;
;
//打印栈中元素
void PrintStack(stack<int> S)
cout << "栈中的元素为:";
if (S.empty())
cout << "栈为空";
while (! S.empty())
cout << S.top() << " ";
S.pop();
cout << endl;
void test01()
CQueue c;
for (int i = 0; i < 5; i++)
c.appendTail(i);
cout << "A:";
PrintStack(c.A);
cout << "B:";
PrintStack(c.B);
for (int i = 0; i < 2; i++)
c.deleteHead();
cout << "A:";
PrintStack(c.A);
cout << "B:";
PrintStack(c.B);
int main()
test01();
system("pause");
return 0;
Python版本
class CQueue:
def __init__(self): # 初始化两个栈A,B
self.A = []
self.B = []
def appendTail(self, value):
self.A.append(value) # 将数据添加到栈A
def deleteHead(self):
if self.B:
return self.B.pop()
if not self.A:
return -1
while self.A:
self.B.append(self.A.pop()) # 栈B内加入从栈A删除的数据
return self.B.pop()
def test01():
CQ = CQueue()
for i in range(5):
CQ.appendTail(i)
print("A:",CQ.A)
print("B:",CQ.B)
CQ.deleteHead()
CQ.deleteHead()
print("A:",CQ.A)
print("B:",CQ.B)
if __name__=="__main__":
test01()
Java版本
package com.hailei_01;
import java.util.Stack;
public class cqueue
public static void main(String[] args)
for (int i=0; i<6;i++)
CQueue.appendTail(i);
System.out.println(CQueue.A);
System.out.println(CQueue.B);
for (int i=0; i<3;i++)
CQueue.deleteHead();
System.out.println(CQueue.A);
System.out.println(CQueue.B);
public static class CQueue
static Stack<Integer> A = new Stack<>();
static Stack<Integer> B = new Stack<>();
public static void appendTail(int value)
A.push(value);
public static int deleteHead()
while (!A.empty())
B.push(A.pop());
return B.pop();
希望本文对大家有帮助,上文若有不妥之处,欢迎指正
分享决定高度,学习拉开差距
以上是关于LeetCode刷题--点滴记录007的主要内容,如果未能解决你的问题,请参考以下文章