首页 > 代码库 > java代码实现栈

java代码实现栈

1.栈的定义:

     栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。

技术分享

2.java代码实现栈

数组实现:

package test;

public class stack {

    private int maxSize;// 栈的大小
    private int top;
    private char[] arr;

    public stack(int size) {
        maxSize = size;
        top = -1;
        arr = new char[maxSize];
    }

    public void push(char value) { // 压入数据

        arr[++top] = value;
    }

    public char pop() { // 弹出数据

        return arr[top--];
    }

    public char peek() { // 访问栈顶元素

        return arr[top];
    }

    public boolean isFull() { // 栈是否满了

        return maxSize - 1 == top;
    }

    public boolean isEmpty() { // 栈是否为空

        return top == -1;
    }

}

利用栈实现字符串的倒叙输出

package test;

public class Reverse {
    String input;

    public Reverse(String input) {
        this.input = input;
    }

    public String doReverse() {
        stack s = new stack(input.length());
        for (int i = 0; i < input.length(); i++) {
            s.push(input.charAt(i));
        }
        String output = "";
    while(!s.isEmpty()){
            output += s.pop();
    }
        return output;

    }

}


测试:

@Test
    public void fun(){
        Reverse r=new Reverse("人国中是我");
        System.out.println(r.doReverse());
    }

链式实现:

package test;

import java.util.LinkedList;

public class stack1 {

    private LinkedList<Object> a = new LinkedList<Object>();

    public void push(Object o) {
        a.addFirst(o);

    }

    public Object pop() {
        return a.removeFirst();
    }

    public Object peek() {
        return a.getFirst();
    }

    public boolean empty() {

        return a.isEmpty();
    }

}

 

java代码实现栈