Java用链表实现队列

队列--先入先出

栈---后入先出

链表实现队列和栈。首先我们需要构建一个链表。链表有哪几要素?  

1、链表本身的value

2、链表的next指针,next指针指的还是同样类型的值。

下边看代码

public class Element<T> {

    private T value;//链表值
    private Element<T> next;//指针

    public void setNext(Element<T> next) {
        this.next = next;
    }
    public Element<T> getNext(){
        return  next;
    }

    public void setValue(T value) {
        this.value = value;
    }
    public  T getValue(){
        return value;
    }
}

下边我们来构建先入先出的队列。

首先队列有一个头,不然的话 队列从哪开始呢?

所以我们定义类时主要包括  头、尾、链表长度。

代码如下:

public class ListImpl<T>{

    private  Element<T> first=null; //链表头
    private  Element<T> last=null; //链表尾
    private int size=0; //链表长度


    public boolean pushBack(T newElement) {
      Element<T> element=new Element<>();
      element.setValue(newElement);
      if(size==0) {
          first=element;
          size++;
          return  true;
      }
      if(last==null){
          last=element;
          first.setNext(last);
      }else {
          last.setNext(element);
          last=element;
      }
      size++;
        return true;
    }


    public Element<T> popFront() {
       if(first==null){
           return  null;
       }else {
           Element<T> result=first;
           first=first.getNext();
           return  result;
       }
    }


    public int size() {
        return size;
    }

 
    public Element front() {
        return first;
    }
}

好了 到底我们的链表结构就完成了。下边测试一下吧

 public static void main(String[] args) {
        ListImpl<String> list=new ListImpl<String>();
        list.pushBack("11");
        list.pushBack("22");
        list.pushBack("33");
        System.out.print(list.popFront().getValue().toString());
        System.out.print(list.popFront().getValue().toString());
        System.out.print(list.popFront().getValue().toString());
    }
结果:11
结果:22
结果:33

猜你喜欢

转载自blog.csdn.net/zs742946530/article/details/83117747