java中栈stack和队列queue用法详细分析(全)
2021/5/11 20:55:22
本文主要是介绍java中栈stack和队列queue用法详细分析(全),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 1.前言
- 2.栈stack的用法
- 3.队列queue的用法
- 4.额外补充
- 5.具体案列测试
1.前言
栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表, 其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构
2.栈stack的用法
实例化一个对象
Deque<TreeNode> stk = new LinkedList<TreeNode>();
用这个对象调用函数
判断是否为空 stk.isEmpty();
入栈stk.push();
出栈stk.pop();
显示栈顶头元素,但不移除stk.peek();
3.队列queue的用法
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用
实例化一个对象
Queue<TreeNode> q = new LinkedList<TreeNode>();
用这个对象调用函数
判断是否为空 q.isEmpty();
添加元素q.offer();
删除元素q.poll();
显示队列头元素但不移除q.peek();
常用的函数用法有这些
offer(); add();//表示增加元素 poll();remove();//表示移除元素 element();peek();//显示队列头一个元素,不会删除元素
区别
add(),remove(),element()出错的时候会抛出异常,比如队列满了,add会抛出异常
而offer(),poll(),peek()l则不会抛出异常,offer显示false,poll显示null,peek显示null。
4.额外补充
数组的实例化对象
List<Integer> res = new ArrayList<Integer>();
5.具体案列测试
中序遍历的用栈的迭代
class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<Integer>(); Deque<TreeNode> stk = new LinkedList<TreeNode>(); while (root != null || !stk.isEmpty()) { while (root != null) { stk.push(root); root = root.left; } root = stk.pop(); res.add(root.val); root = root.right; } return res; } }
对称二叉树用队列实现
class Solution { public: bool check(TreeNode *u, TreeNode *v) { queue <TreeNode*> q; q.push(u); q.push(v); while (!q.empty()) { u = q.front(); q.pop(); v = q.front(); q.pop(); if (!u && !v) continue; if ((!u || !v) || (u->val != v->val)) return false; q.push(u->left); q.push(v->right); q.push(u->right); q.push(v->left); } return true; } bool isSymmetric(TreeNode* root) { return check(root, root); } };
这篇关于java中栈stack和队列queue用法详细分析(全)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南