用 Stack 实现栈
这个类现在已经不常用了,不过作为学习,还是需要了解一下,实现代码如下:
/**
* 用 Stack 类实现栈
*/
public class StackTest {
public static void main(String[] args) {
Stack s = new Stack();
Scanner sc = new Scanner(System.in);
int num;
while ((num = sc.nextInt()) != -1){
s.push(num);
}
System.out.println("元素2在栈中的位置:" + s.search(2));
System.out.println("弹出栈顶元素:" + s.pop());
System.out.println("弹出栈顶元素:" + s.pop());
}
}
上面代码的运行结果如下:
用 ArrayDeque 实现栈
实现代码如下:
/**
* 用 ArrayDeque 实现 栈
*/
public class ArrayQueueStack {
public static void main(String[] args) {
ArrayDeque stack = new ArrayDeque();
Scanner sc = new Scanner(System.in);
int num;
while ((num = sc.nextInt()) != -1){
stack.push(num);
}
//获取栈顶元素,并移除栈顶
System.out.println(stack.pop());
System.out.println("栈中元素个数为:" + stack.size());
System.out.println(stack.pop());
System.out.println("栈中元素个数为:" + stack.size());
}
}
运行结果如下:
用 ArrayQueue 实现队列
/**
* 用 ArrayDeque 实现 队列
*/
public class ArrayDequeQueue {
public static void main(String[] args) {
ArrayDeque queue = new ArrayDeque();
Scanner sc = new Scanner(System.in);
int num;
while ((num = sc.nextInt()) != -1){
queue.offer(num);
}
//获取队头,但不移除
System.out.println(queue.peek());
System.out.println("队列中元素个数为:" + queue.size());
//获取队头,并移除
System.out.println(queue.poll());
System.out.println("队列中元素个数为:" + queue.size());
System.out.println(queue.poll());
System.out.println("队列中元素个数为:" + queue.size());
}
}
运行结果如下:
用 LinkedList 实现栈和队列
代码如下:
/**
* 用 LinkedList 实现栈和队列
*/
public class LinkedListTest {
public static void main(String[] args) {
LinkedList ll = new LinkedList();
ll.offer("aaa"); //队尾
ll.push("bbb"); //栈顶
ll.offerFirst("ccc"); //队头(相当于栈顶)
for (int i = 0; i < ll.size(); i++){
System.out.println("遍历中:" + ll.get(i));
}
//访问并不删除栈顶
System.out.println(ll.peekFirst());
//访问并不删除队列最后一个
System.out.println(ll.peekLast());
//访问并移除栈顶
System.out.println(ll.pop());
}
}
运行结果如下: