码迷,mamicode.com
首页 > 其他好文 > 详细

栈和队列

时间:2020-06-14 11:14:49      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:int   bsp   图片   链表   需要   http   技术   ext   nbsp   

相关概念

  • 栈是一种特殊的线性表
  • 只允许在固定的一端进行插入和删除元素操作。
  • 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。
  • 原则:后进先出LIFO(Last In First Out)
  • 压栈:栈的插入操作,入数据在栈顶
  • 出栈:栈的删除操作,出数据也在栈顶

技术图片

 

 我们来实现自己的栈,首先用数组来实现

package com.differ.jackyun.examples.javabasisc.datastructure;
import org.junit.Test;
import java.util.Arrays;
/**
 * 实现自己的栈
 *
 * @author hup
 * @data 2020-06-14 8:54
 **/
public class MyStackWithArr<E> {
    /**
     * 数组
     */
    public Object[] arrStack;
    /**
     * 数组内元素数量
     */
    public int count;

    public MyStackWithArr() {
        arrStack = new Object[10];
    }


    /**
     * 入栈
     *
     * @param item
     */
    public void push(E item) {
        //判断空间大小情况和扩容
        this.relize(count + 1);
        //元素放入数组
        arrStack[count] = item;
        count++;
    }

    /**
     * 判数组长度是否够用,自动扩容
     *
     * @param maxCount 需要存储的总量
     */
    private void relize(int maxCount) {
        if (maxCount <= this.count) {
            return;
        }
        //扩容  10
        arrStack = Arrays.copyOf(arrStack, 10);
    }

    /**
     * 出栈
     *
     * @return
     */
    public E pop() {
        E item = (E) arrStack[count - 1];
        arrStack[count - 1] = null;
        count--;
        return item;
    }

    /**
     * 取栈顶数据
     *
     * @return
     */
    public E peek() {
        E item = (E) arrStack[count - 1];
        return item;
    }
}

 

然后我们测试下好不好用

    @Test
    public void test() {
        MyStackWithArr mystack = new MyStackWithArr();
        //入栈3个元素
        mystack.push(new Node(1));
        mystack.push(new Node(2));
        mystack.push(new Node(3));

        //出栈3个元素
        System.out.println(mystack.pop());
        System.out.println(mystack.pop());
        System.out.println(mystack.pop());
    }

输出结果:

Node{next=null, data=3}
Node{next=null, data=2}
Node{next=null, data=1}

可以看到,是后入先出的输出,栈生效了

 

 

用单向链表实现自己的栈

 

栈和队列

标签:int   bsp   图片   链表   需要   http   技术   ext   nbsp   

原文地址:https://www.cnblogs.com/hup666/p/13123859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!