跟小刀学习 java 数据结构 栈和队列的实现
2017-04-25 20:59
656 查看
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() + " "); } }
数据结构总是那么难。今天先写俩个比较简单的,后续我还会继续发表博客,第一写会有不对的地方还请大家多多指教。
相关文章推荐
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- 数据结构学习----顺序循环队列(Java实现)
- 数据结构学习之队列的Java实现
- 数据结构学习----链式队列(Java实现)
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- 数据结构学习之循环队列的另一种c++实现
- 【数据结构】之队列的java实现(一)
- 【学习点滴-数据结构-栈&队列】 栈的应用--递归的实现-汉诺塔
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
- 数据结构学习三(一个简单的队列实现)
- JAVA学习笔记(十)基于LinkedList实现栈和队列
- 数据结构复习:队列-Java数组实现
- 数据结构的Java实现——栈和队列
- java与数据结构(8)---java实现链队列
- java 实现数据结构之队列
- 数据结构学习的简单问题(四):用队列自己实现String类
- 数据结构(Java 队列模拟)本代码重在学习数据结构思路,代码完整性欠缺,请见谅
- 数据结构学习笔记 --- 队列(循环队列-队列的顺序表示和实现)
- java实现栈,队列数据结构