数据结构——栈,队列

1.栈与队列

 栈与队列是程序设计中广泛使用的两种重要的线性数据结构。

  栈是LIFO(Last In First Out),先存进去的数据只能最后被取出来,进出顺序逆序,即先进后出,后进先出。

       队列是FIFO(First In First Out),它保持进出顺序一致,即先进先出,后进后出。

 

代码实现:

package com.lyz.dataStructure.stack;

/**
 *@Author:759057893@qq.com Lyz
 *@Date: 2019/3/29 10:36
 *@Description:
 **/

/*
栈 先进后出
 */

 /*
 4      * 用数组实现栈  先进后出,后进先出
 5      * 思路:定义一个数组,用来保存入栈的数据,数组初始化大小为10
 6      *     用size表示入栈数据的个数 而size-1则是对应的数组下标
 7      *     (由于是数组,需要考虑扩容的问题)
 8      *     入栈时,需要判断数据个数是否超出数组大小,如果超出 使用Arrays.copyOf(,)来扩容
 9      *     
10      *     出栈时,则直接获取栈顶数据,即根据size-1获取后进的数据元素的数组下标,然后将对应出栈
11      *     的数据元素的数组下标处置空。
12      *     
13      */
public class Mystack {
    //底层实现是一个数组
    private int [] arr;
    private int top;

    public Mystack(){
        arr= new int[10];
        top = -1;
    }

     public Mystack(int maxsize){
        arr = new int[maxsize];
        top = -1;
     }
    //入栈
     public void push (int value){
        arr[++top] =value;
     }

     //出栈
     public int pop(){
         return arr[top--];
     }
     /*
     查看数据
      */

     public int peek(){
         for(int i =0; i<arr.length-1; i++){
             System.out.print( arr[i]+",");
         }

         return arr[top];
     }

     /*
     判断是否为空
      */
     public boolean isEmpty(){
         return  top == -1;
     }
    /*
    判断是否满了
     */
    public boolean isFull(){
        return  top == arr.length-1;
    }


    public static void main(String[] args) {
        Mystack myStack = new Mystack(5);
        myStack.push(5);
        myStack.push(16);
        myStack.push(81);
        myStack.push(25);
        myStack.push(90);
        System.out.println("是否为空:"+myStack.isEmpty());
        System.out.println("是否满了:"+myStack.isFull());
        System.out.println(myStack.peek());
        while(!myStack.isEmpty()){
            System.out.print(myStack.pop()+",");
        }
        System.out.println();
        System.out.println("是否为空:"+myStack.isEmpty());
        System.out.println("是否满了:"+myStack.isFull());
    }
}

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

3分钟秒懂大数据

你的打赏就是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值