用固定大小的数组模拟栈和队列
2019-03-16 11:48
99 查看
模拟栈的入栈和出栈
通过一个变量index来指向栈顶元素的位置。
public class Mstack { private int size; private int[] arr; private int index;//指向栈顶的元素的位置 public Mstack(int initSize) { if(initSize<0) throw new IllegalArgumentException("数组初始长度有误!"); arr=new int[initSize]; index=0; size=initSize; } public void push(int num) { if(index<size) { arr[index]=num; index++; } else System.out.println("push failed."); } public void pop() { if(index>0) { index--; System.out.println("pop success:"+arr[index]); }else System.out.println("pop failed."); } public static void main(String[] args) { Mstack mstack=new Mstack(3); mstack.push(2); mstack.push(3); mstack.push(1); mstack.pop(); } }
模拟队列的出队和入队
通过三个变量,就可以不用移位来出队和入队。
变量start指向对头
变量end指向队尾
变量size数组包含有元素的实际长度
package SortArr; public class Mqueue { private int[] arr; private int start; private int end; private int size; public Mqueue(int initSize) { if(initSize<0) throw new IllegalArgumentException("数组长度有误!"); arr=new int[initSize]; start=0; end=0; size=0;//初始时start和end都指向0位置的元素,通过size来判断数组有无元素 } public Integer peek() { if(size>0) return arr[start]; else return null; } public void push(int num) { if(size==arr.length) System.out.println("队列已满!"); else { arr[end++]=num; end%=arr.length;//当end指向数组的最后一个的下一个时,应转向指回0位置的元素 size++;//元素个数++ } } public Integer poll() { if(size>0) { size--; System.out.println(arr[start]); int t=start++; start%=arr.length;//start同end一样,也要转向往回指0位置的元素 return arr[t]; } else return null; } public static void main(String[] args) { Mqueue mqueue=new Mqueue(3); mqueue.push(3); mqueue.push(1); mqueue.push(2); mqueue.poll(); mqueue.push(6); mqueue.poll(); mqueue.poll(); mqueue.poll(); } }
相关文章推荐
- 算法之桶排序,数组结构实现大小固定的队列和栈
- 用数组结构实现大小固定的栈和队列
- 用数组结构实现大小固定的队列和栈
- 用数组结构实现固定大小的队列
- HDU1874 spfa的简单写法(24K纯C,数组模拟队列)
- 将一个数组按照固定大小进行拆分成数组
- 面试金典--一个数组实现三个栈(固定大小)
- Java数组和链表模拟队列
- 【Weiss】【第03章】练习3.25:数组模拟队列
- 使用数组实现固定大小的栈结构
- 数组模拟队列
- Java 数组模拟队列
- 用数组模拟 优先级队列
- PHP数据结构:栈、队列、堆、固定数组
- JAVA使用数组简单模拟队列
- wait, notify, notifyAll, 简单数组模拟队列实现读者写者问题。
- 数组模拟链表之P1160 队列安排
- 用数组模拟循环队列
- 最简单的一种栈 固定大小 [数组实现]
- 2017浙工大院赛预赛 D 简单的数据结构【双端队列||数组模拟】