用LinkedList实现栈和队列

2,616 阅读1分钟

用List实现栈和队列

转载

blog.csdn.net/qq_25134989…

1) Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。

LinkedList实现栈

package com.ces.collection;

import java.util.EmptyStackException;
import java.util.LinkedList;

public class MyStack {
    private LinkedList<Object> li=new LinkedList<Object>();

    //1构造方法  
    public MyStack(){

    }

    //2出栈  
    public Object pop(){
        if(isEmpty()){
            throw new EmptyStackException();
        }
        return li.removeFirst();
    }

    //3进栈  
    public void push(Object obj){ //注意o不要0的区别,不要写成0了  
        li.addFirst(obj);
    }

    //4清空  
    public void clear() {
        li.clear();
    }
    //5判断是否为空  
    public boolean isEmpty(){
        return li.isEmpty();
    }

    //6 将对象转换成字符串  
    public String toString(){
        return li.toString();
    }

    //7返回栈口元素  
    public Object peek(){
        if(isEmpty()){
            throw new EmptyStackException();
        }
        return li.peekFirst();

    }

    public static void main(String[] args) {
        MyStack stack=new MyStack();
        //进栈  
        stack.push("a");
        stack.push("b");

        //出栈  
        System.out.println(stack.pop());

        //返回栈口元素  
        System.out.println(stack.peek());


    }

} 

2) 队列:是先进先出(FIFO,First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。

LinkedList实现队列

package com.ces.collection;

import java.util.EmptyStackException;
import java.util.LinkedList;

//借助LinkedList 类中的方法实现队列  
public class MyQueue {
    private LinkedList<Object> li = new LinkedList<Object>();

    // 1构造方法  
    public MyQueue() {

    }

    // 2出列  
    public Object get() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return li.removeFirst();
    }

    // 3进列  
    public void put(Object obj) {
        li.addLast(obj);
    }

    // 4清空  
    public void clear() {
        li.clear();
    }

    // 5 返回队列首元素(不删除)  
    public Object getTop() {
        if (isEmpty()) {
            throw new EmptyStackException();
        }
        return li.peekFirst();
    }

    // 6将对象转换成字符串  
    public String toString() {
        return li.toString();
    }

    // 7判断队列是否为空  
    public boolean isEmpty() {
        return li.isEmpty();
    }

    public static void main(String[] args) {
        MyQueue mq = new MyQueue();
        // 进列  
        mq.put("a");
        mq.put("b");
        mq.put("c");

        // 出列  
        System.out.println(mq.get());
        System.out.println(mq.get());

        // 返回对首元素  
        System.out.println(mq.getTop());

    }
}