跟小刀学习 java 数据结构 栈和队列的实现
来源:互联网 发布:鬼畜软件 编辑:程序博客网 时间:2024/04/30 14:06
- java 数据结构 列和栈的实现
- 栈的原理 先进后出 先进入的放在最下面后进入的在最上面,拿的时候从最上面拿 这就是栈的原理
代码如下:public class MyStack { //底层实现是一个数组 private long[] arr; private int top;//表示栈顶 /** * 默认的构造方法 */ public MyStack() { arr = new long[10]; top = -1; } /** * 带参数构造方法,参数为数组初始化大小 */ public MyStack(int maxsize) { arr = new long[maxsize]; top = -1; } /** * 添加数据 */ public void push(int value) { arr[++top] = value; } /** * 移除数据 */ public long pop() { return arr[top--]; } /** * 查看数据 */ public long peek() { return arr[top]; } /** * 判断是否为空 */ public boolean isEmpty() { return top == -1; } /** * 判断是否满了 */ public boolean isFull() { return top == arr.length - 1; }}测试代码:public static void main(String[] args) { MyStack ms = new MyStack(4); ms.push(23); ms.push(12); ms.push(1); ms.push(90); System.out.println(ms.isEmpty()); System.out.println(ms.isFull()); System.out.println(ms.peek()); while(!ms.isEmpty()) { System.out.print(ms.pop() + ","); } System.out.println(); System.out.println(ms.isEmpty()); System.out.println(ms.isFull()); }
队列的原理:先进先出,后进后出 ,就比如你去火车站买票,第一人排队的肯定是他先买完走了。排在最后的肯定是最后走
代码如下:/* * 列队类 */public class MyCycleQueue { //底层使用数组 private long[] arr; //有效数据的大小 private int elements; //队头 private int front; //队尾 private int end; /** * 默认构造方法 */ public MyCycleQueue() { arr = new long[10]; elements = 0; front = 0; end = -1; } /** * 带参数的构造方法,参数为数组的大小 */ public MyCycleQueue(int maxsize) { arr = new long[maxsize]; elements = 0; front = 0; end = -1; } /** * 添加数据,从队尾插入 */ public void insert(long value) { if(end == arr.length - 1) {// 如果添加的数据满了。就重新开始添加让end=-1 end = -1; } arr[++end] = value; elements++; } /** * 删除数据,从队头删除 */ public long remove() { long value = arr[front++];//每次取一个数据 if(front == arr.length) {//如果front 的值等于arr.length 说明取完了从新开始 front = 0; } elements--; return value; } /** * 查看数据,从队头查看 */ public long peek() { return arr[front]; } /** * 判断是否为空 */ public boolean isEmpty() { return elements == 0; } /** * 判断是否满了 */ public boolean isFull() { return elements == arr.length; }}测试代码:public static void main(String[] args) { MyCycleQueue mq = new MyCycleQueue(4); mq.insert(23); mq.insert(45); mq.insert(13); mq.insert(1); System.out.println(mq.isFull()); System.out.println(mq.isEmpty()); System.out.println(mq.peek()); System.out.println(mq.peek()); while (!mq.isEmpty()) { System.out.print(mq.remove() + " "); } System.out.println(); mq.insert(23); mq.insert(45); mq.insert(13); mq.insert(1); while (!mq.isEmpty()) { System.out.print(mq.remove() + " "); } }
数据结构总是那么难。今天先写俩个比较简单的,后续我还会继续发表博客,第一写会有不对的地方还请大家多多指教。
3 0
- 跟小刀学习 java 数据结构 栈和队列的实现
- 跟小刀学习 数据结构二叉树的实现
- 跟小刀 学习数据结构 红黑树的概念
- 跟小刀学习 java 数据结构 单向链表
- 跟小刀学习 递归简单实现
- 跟小刀 学习java导出word
- 跟小刀学习 lucene 分词的原理
- 跟小刀 学有序链表的实现
- 数据结构学习之队列的Java实现
- 数据结构2----线性表顺序存储和链式存储的实现(霜之小刀)
- 跟小刀学 数据结构 双向链表
- 数据结构学习笔记(9.栈和队列的特殊实现)
- 数据结构的Java实现——栈和队列
- java中的数据结构---栈、队列和树的实现
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- java数据结构,实现栈/队列
- java实现栈,队列数据结构
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- CF#798 A. Mike and palindrome(水题)
- 【linux】ubuntu右键添加终端
- 《CSS权威指南》读书笔记8
- 人类简史——开篇
- quagga 的原理解析 zebra原理解析
- 跟小刀学习 java 数据结构 栈和队列的实现
- JZOJ 4.22 2131——【2017.4.21普及】数字游戏
- PHP里设置小数点的位数
- CentOS安装redis
- JS面向对象
- 小鑫の日常系列故事(六)——奇遇记
- Web 图片性能优化系列一:背景与基础
- PHP学习(0)
- JavaScript 简单实现加减乘除运算