java 使用链表来模拟队列的入队出队操作

队列:先进先出;

队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

1.节点类代码

public class Entry<T> {
private T value;
private Entry<T> next;
public Entry() {
    this(null);
}
public Entry(T value) {
    this.value=value;
    this.next=null;

}
    
public void setValue(T value) {
    this.value=value;
}
public void setNext(Entry<T> next) {
    this.next=next;
}

public T getValue() {
    return value;
}

public Entry<T> getNext(){
    return next;
}

}

2.队列的入队出队方法代码

public class Queue<T> {
public Entry<T> headEntry;
private Entry<T> tail;
public Queue() {
    headEntry=new Entry<>();
    tail=headEntry;
}
public void add(T value) {//入队
    Entry<T> newEntry=new Entry<>(value);
    tail.setNext(newEntry);
    tail=newEntry;
    
    
}
public void delete() {//出队
    if(headEntry.getNext()!=null) {
        headEntry.getNext().setValue(null);
        headEntry.setNext(headEntry.getNext().getNext());
        
    }
    else {
        return;
    }
}

public void show(){//打印队内元素
    if(headEntry.getNext()==null) {
        return;
    }
    for(Entry<T> p = headEntry.getNext();p!=null;p=p.getNext()){
        System.out.print(p.getValue()+" ");
    }
    System.out.println();
}
}

3.测试代码

public class Main {
public static void main(String args[]) {
     Queue<String> ll=new Queue<>();
     ll.add("1");//入队
     ll.add("2");
     ll.add("3");
     ll.add("4");
     ll.add("5");
     ll.add("6");
     ll.add("7");
     ll.add("8");
     ll.show();//打印队内元素
     ll.delete();//出队
     ll.show();
     ll.delete();
     ll.show(); 
     
}
}

4.测试结果

猜你喜欢

转载自www.cnblogs.com/zunzunzunshen/p/10305079.html