数据结构与算法(三)栈&&队列

来源:互联网 发布:饮水机控温器单片机 编辑:程序博客网 时间:2024/06/05 16:14

1. 栈(stack)的构造与应用

栈可以理解为一个箱子,存放数据的时候是先放进去的在底部,后放进去的在顶部,因此满足先进后出,后进先出。

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 class TestMyStack {public static void main(String[] args) {// TODO Auto-generated method stubMyStack 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());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());}}


2. 列队(queue)的构造和应用

列队可以考虑为一个火车票窗口买票,先排的人先获得服务,后排的人后获得服务,因此满足先进先出,后进后出(即先来后到)。

public class MyQuene {//底层使用数组private long[] arr;//有效数据大小private int elements;//队头private int front;//队尾private int end;/* * 默认构造方法 */public MyQuene(){arr= new long[10];elements=0;front=0;end =-1;}/* * 带参数的构造方法,参数为数组大小 */public MyQuene(int maxsize){arr=new long[maxsize];elements=0;front=0;end=-1;}/* * 添加数据,从队尾插入 */public void insert(long value){arr[++end]=value;elements++;}  //循环列 队//public void insert(long value){//if(end==arr.length-1){//end=-1;//}//arr[++end]=value;//elements++;//}/* * 删除数据,从队头删除 */public long remove(){elements--;return arr[front++];}  //循环列队//public long remove(){//long value=arr[front++];//if(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 class TestMyQueue {public static void main(String[] args) {// TODO Auto-generated method stubMyQuene mq=new MyQuene(4);//MyCycleQuene mq=new MyCycleQuene(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()+",");//}System.out.println();System.out.println(mq.isFull());System.out.println(mq.isEmpty());}}


0 0
原创粉丝点击