数据结构
数据结构-Java实现
Eternal_Summer-
Java学习,共同进步
展开
-
栈-逆波兰式求值问题
栈-逆波兰式求值问题 逆波兰式(后缀表达式):运算符总放在跟它相关的操作数之后。 而我们平常生活中使用的都是:中缀表达式。如:1+3*2 中缀表达式 逆波兰表达式 a+b ab+ a+(b-c) abc-+ a+(b-c)*d abc-d*+ a*(b-c)+d abc-*d+ 解决的问题: 给定一个只包含加减乘除四种运算的逆波兰表达式的数组表示方式,求出该逆波兰表达式的结果。 解决思路: 创建一个栈对象oprands存储操作数 从左往右遍历逆波兰表达式,得到每一个字符原创 2021-07-09 10:44:11 · 215 阅读 · 0 评论 -
栈-解决括号匹配问题
栈-解决括号匹配问题 问题:给定一个字符串,里面可能包含“()”和其他字符,编写程序检查小括号是否成对出现、 设计思路: 创建一个栈来存储左括号。 从左到右遍历字符串,拿到每一个字符。 如果字符是左括号,将其放入栈中。 如果字符是右括号,则从栈中弹出一个元素。 如果都不是,继续下一次循环。 判断弹出的元素t是否为null,如果不是,证明有对应的左括号,如果不是,则证明没有对应的左括号。 循环结束后,判断栈中还有没有剩余的左括号,如果有,则不匹配,如果没有,则匹配。 代码实现: import jav原创 2021-07-09 10:37:22 · 230 阅读 · 0 评论 -
数据结构-队列-Java实现
数据结构-队列-Java实现 队列:先进先出 实现:链表形式 import java.util.Iterator; /** * 队列 */ public class Queue<T> implements Iterable<T>{ private Node<T> head;//队头 private int N;//对列内结点个数 private Node<T> last;//队尾 //初始化队列 public原创 2021-07-09 10:21:42 · 78 阅读 · 0 评论 -
数据结构-栈-Java实现
数据结构-栈-Java实现 使用Java实现数据结构栈,并且实现形式使用的是链表 import java.util.Iterator; /** * 栈--链表方式实现 */ public class Stack<T> implements Iterable<T>{ private int N;//当前栈内结点个数 private Node head;//头结点 //初始化栈 public Stack() { this.N =原创 2021-07-07 20:29:02 · 70 阅读 · 0 评论 -
单链表-快慢指针
单链表-快慢指针 快慢指针指的是定义两个指针,这两个指针的移动速度一快一慢,通常快指针的移动速度为慢指针的2倍。以此来制造出自己想要的差值,这个差值可以帮我们找到链表上相应的结点。 1. 中间值问题 原理:利用快慢指针,我们可将一个链表看成是一个跑道,假设a的速度是b的两倍,那么当a跑完全程后,b刚好跑完一半,以此来找到中间结点。 /** * 快慢指针求链表中间值 * 当链表结点为奇数个:如7个结点,那么中间为(7+1)/2 = 4 * 当链表结点为偶数个:如6个结点,那么中间为(6+2)/2原创 2021-07-07 20:28:34 · 661 阅读 · 2 评论