美文网首页
栈的Java实现

栈的Java实现

作者: 嗷老板 | 来源:发表于2019-03-19 21:37 被阅读0次

  栈是存放对象的一种特殊容器,在插入与删除对象时,这种结构遵循后进先出(Last-in-first-out,LIFO)的原则⎯⎯也就是说,对象可以任意插入栈中,但每次取出的都是此前插入的最后一个对象。

Java栈的通用接口

package com.stack;

public interface Stack {

    public int getSize();//返回栈中元素个数
    
    public boolean isEmpty();//判断栈是否为空
    
    public Object top();//获取栈顶元素,但不删除
    
    public void push(Object elem);//入栈
    
    public Object pop();//出栈
}

基于数组实现栈

package com.stack;

public class MyStack implements Stack{

    public static final int CAPACITRY = 1024;
    public int capacity;
    public Object[] s;
    public int top = -1;
    
    public MyStack()
    {
        this(CAPACITRY);
    }
    
    
    public MyStack(int cap) {
        capacity = cap;
        s = new Object[capacity];
    }


    @Override
    public int getSize() {
        
        return top+1;
    }

    @Override
    public boolean isEmpty() {
        
        return (top < 0);
    }

    @Override
    public Object top() {
        
        if(isEmpty())
        {
            System.out.println("栈为空");
            return null;
        }
        return s[top];
    }

    @Override
    public void push(Object elem) {
        if(getSize() == capacity)
        {
            System.out.println("栈满");       
            return;
        }
        s[++top] = elem;
    }

    @Override
    public Object pop() {
        if(isEmpty())
        {
            System.out.println("栈为空");
            return null;
        }
        
        Object elem = s[top];
        s[top--] = null;
        return elem;
    }

}

基于单链表实现栈

  节点的java实现

package com.node;

public class Node {

    private Object elem;
    private Node next;
    
    public Node()
    {
        this(null,null);
    }
    
    public Node(Object e,Node n)
    {
        elem = e;
        next = n;
    }
    
    public Object getElem() {       
        return elem;
    }

    public void setElem(Object elem) {
        this.elem = elem;
    }
    
    public Node getNext()
    {
        return this.next;
    }
    
    public void setNext(Node next)
    {
        this.next = next;
    }

}

  栈的实现

package com.stack;

import com.node.Node;

//单链表实现栈
public class Stack_list implements Stack{

    protected Node top;//栈顶元素
    protected int size;//栈中元素个数
    
    //初始化时创建头结点
    public Stack_list()
    {
        top = null;
        size = 0;
    }
    
    @Override
    public int getSize() {

        return size;
    }

    @Override
    public boolean isEmpty() {
        return (top == null)?true:false;
    }

    @Override
    public Object top() {
        if(isEmpty())
        {
            System.out.println("栈为空");
        }
        return top.getElem();
    }

    @Override
    public void push(Object elem) {
        //元素压栈
        Node newNode = new Node(elem,top);
        top = newNode;//修改栈顶指针
        size++;//修改栈中元素个数
    }

    @Override
    public Object pop() {
        if(isEmpty())
        {
            System.out.println("栈为空");
            return null;            
        }
        Object elem = top.getElem();
        top = top.getNext();
        size--;
        return elem;
    }

}

相关文章

  • Java示例教程

    Java 实现栈stackJava 实现栈stack2Java 向量Vector 反转Java 向量Vector ...

  • 基于动态数组的实现 Java实现 基于链表的栈的实现 Java实现

  • Java数据结构和算法系列———栈

    目录 1、栈的基本概念2、Java模拟简单的顺序栈实现3、增强功能版栈4、利用栈实现字符串逆序5、利用栈判断分隔符...

  • java实现栈

    栈特点:后进先出 类似于堆盘子。第一个放下的盘子一定是在底部( 在栈中的就叫push(压入)),最后一个盘子在顶部...

  • Java实现栈

    数组栈:压栈、出栈、返回栈顶元素 链式栈:压栈、出栈、返回栈顶元素

  • Java实现栈

    在上篇文章中,我们了解了单向链表。在这篇文章中,我们了解下另一种数据结构,栈。通过单向链表我们可以实现栈 栈 栈是...

  • 栈(java实现)

    栈是特殊的线性表,只能从表尾进行插入和删除,称为入栈和出栈。

  • 数据结构--栈

    栈栈---后进先出 在Java里有一个Vector的子类Stack()实现了栈。 Stack()方法 boolea...

  • Android面试题总结(题目+复习链接)

    数据结构 1.栈实现原理 java数据结构与算法之栈(Stack)设计与实现 - CSDN博客 2.链表实现原理 ...

  • 栈的Java实现

    利用数组实现栈的操作,栈的操作是先进后出。

网友评论

      本文标题:栈的Java实现

      本文链接:https://www.haomeiwen.com/subject/dblomqtx.html