向双头队列添加和删除元素

问题描述 投票:1回答:1

我有一个创建双端队列,可以从两侧(即前后)添加,删除和查看元素。>>

[我有增加,删除和查看'头部'元素的方法,但是我无法弄清楚对队列的'尾部'做同样事情的方法

到目前为止是我的代码:-

public class dequeue
{
    private Node rear;
    private Node front;
    private int counter;

    class Node 
    {
        private String item;
        private Node link;
    }

    public Node()
    {
        rear = front = null;
        counter = 0;
    }

    public void hAdd(String o)
    {
        Node temp = new Node();
        temp.item =o;
        temp.link =null;

        if (rear==null)
            front = rear = temp;

        else
        {
            rear.link = temp;
            rear = temp;
        }
        counter++;
    }

    public boolean isEmpty()
    {
        if(counter==0)
            return true;
        return false;
    }

    public Object hPeek()
    {
        return rear.item;
    }

    public Object hRemove()
    {
        if (isEmpty())
            return null;

        else    
        {
            Object temp=front.item;
            front = front.link;

            if (front == null)
                rear = null;
            counter--;
            return temp;
        }
    }

    public int size()
    {
        return counter;
    }

    public void tAdd(String o)
    {
        Node temp = new Node();
        temp.item =o;
        temp.link =null;

        if (front==null)
            front=rear=temp;

        else
        {
            front.link=temp;
            front=temp;
        }
        counter++;
    }

    public Object tPeek()
    {
        return front.item;
    }

    public Object tRemove()
    {
        if (isEmpty())
            return null;

        else
        {
            Object temp=rear.item;
            rear=rear.link;
            if (rear==null)
            front=null;
            counter--;
            return temp;
        }
    }


    public String toString()
    {
        StringBuilder result=new StringBuilder();
        Node curr=front;
        while(curr!=null)
        {
            result.append(curr.item+" \n");
            curr = curr.link;
        }
        return result.toString();
    }
}    

我有一个创建双端队列,可以从两侧(即,正面和背面)添加,删除和查看元素,我得到了在'头部'添加,删除和查看元素的方法...

java queue
1个回答
0
投票
public class Dequeue {
    int arr[];
    int front;
    int rear;
    int size;


    public Dequeue(int size){
        this.front = -1;
        this.rear=0;
        this.size = size;
        arr = new int[size];
    }
     public Dequeue(){
        this.front = -1;
        this.rear=0;
        this.size = 10;
        arr= new int[size];
    }

    boolean isQueueEmpty(){
        return (front == -1);
    }
    boolean isQueueFull(){
        return front == ((rear+1)%size);
    }
    int getFront(){
        if(isQueueEmpty()){
            return -1;
        }
    return arr[front];
    }
    int getRear(){
        if(isQueueEmpty() || rear < 0){
            return -1;
        }
    return arr[rear];
    }

    void insertFront(int data){
        if(isQueueFull()){
            System.out.println(-1);
            return; 
        }
        if(front == -1){
            front = 0;
            rear=0;
        }
        else if(front == 0){
            front = size - 1 ; 

        }else{
            front = front-1; 
        }
        arr[front] = data; 

    }
    void insertRear(int data){
        if(isQueueFull()){
            System.out.println(-1);
            return; 
        }
        if(front == -1){
            front =0;
            rear=0;
        }
       else{
           rear =((rear+1)%size);
       }
        arr[rear] = data ; 

    }

    void deleteFront(){
        if(isQueueEmpty()){
            System.out.println("-1");
            return; 
        }
         if(front == rear){ 
            front = -1; 
            rear = -1; 
        }else{
        front = ((front+1)%size);
         }

    }
     void deleteRear(){
        if(isQueueEmpty()){
            System.out.println("-1");
            return; 
        }
        if(front == rear){
            front =-1;
            rear=-1;
        }
        else if(rear == 0) 
        rear = size-1; 
        else
        rear = rear-1; 

    }  }
© www.soinside.com 2019 - 2024. All rights reserved.