用到的知识点:创建栈,判断栈是否为空,栈的pop和push
1.创建栈
以整型为例
Stack<Integer> st;
st = new Stack<n>();
类比基础类型
int a;
a=5;
Stack<Integer> st;
Stack表明声明的容器是栈
Intege表明栈存储的变量为整数型
st为栈的名字
st = new Stack<n>();
new创建对象
<n> 当n为具体的数时,如5,表明栈最多存5个变量
当n为空时,表明栈可以随便存,如下
st = new Stack<>()
2.栈的函数
用到了empty(),pop(),push()
empty() 测试栈是否为空,返回boolean
st.empty();
pop() 出栈,返回被出栈元素的值
a = st.pop();
push(a) 将a入栈
st.push(a)
其他的一些函数
peek() 查看栈顶部元素,但不移除它
search(a) 返回a在栈中的位置,以1为基数
3.题解代码
class CQueue {
//队列:先进先出
//声明两个栈
private Stack<Integer> st1;
private Stack<Integer> st2;
public CQueue() {
st1=new Stack<>();//固定搭配 Stack<Interger> name=Stace<>()
st2=new Stack<>();
}
public void appendTail(int value) {
//判断第一个对列是否为空,空的话直接放进去
//非空就将数据全部移到2,放进去后在移回来
//采用while循环,直接全部放入2
while(!st1.empty())
{
st2.push(st1.pop());
}
st1.push(value);
while(!st2.empty())
{
st1.push(st2.pop());
}
}
public int deleteHead() {
//判断1是否为空
//空就null
//非空就pop
if(st1.empty())
{
return -1;
}
else
{
return st1.pop();
}
}
}
/**
* Your CQueue object will be instantiated and called as such:
* CQueue obj = new CQueue();
* obj.appendTail(value);
* int param_2 = obj.deleteHead();
*/