数据结构——Java 实现栈和队列代码


用 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());
    }
}

运行结果如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值