Как определить методы Dequeue для добавления и удаления элементов сзади и спереди?

Вот мой код, где я пытаюсь создать код для методов, которые будут действовать как deque в Java. У меня есть следующие методы:

  • void deque();

  • void addFront();

  • void addRear();

  • void RemoveFront();

  • void RemoveRear();

  • void isempty();

  • void size();

  • void displayArray();

Мне уже удалось сделать код для добавления фронта, и мне было интересно, если кто-нибудь из вас может помочь мне в кодировании для addRear(), RemoveFront() а также RemoveRear(),

import java.util.Scanner;
public class DequeMethods implements Deque{ 
int array [];
int limit;
int CurrentFrontIndex=0;
int CurrentRearIndex;
Scanner in = new Scanner(System.in);

@Override
public void deque() {
    // TODO Auto-generated method stub
    System.out.println("input deque limit");
    this.limit = in.nextInt(); 

    array = new int [limit];

    for(int x = 0; x<limit; x++){
        array[x]=0;
    }

}
@Override
public void addFront() {
    // TODO Auto-generated method stub

    boolean Itemfull= false;
    for(int x=0; x<limit;x++){
        if (array[x]==0){
            Itemfull= false;
            CurrentFrontIndex = x;
            break;

        }else{
        Itemfull=true;}
        if(Itemfull=true){
            System.out.println("input int value");
            int value = in.nextInt();

        int y;
            for(y=CurrentFrontIndex; y>0;y--){
                array[y] =  array [y-1];
            }
            array [y]=value;
        }
    }
}

@Override
public void addRear() {
    // TODO Auto-generated method stub

}
@Override
public void RemoveFront() {
    // TODO Auto-generated method stub

}
@Override
public void RemoveRear() {
    // TODO Auto-generated method stub

}

1 ответ

Решение

Начните с инициализации CurrentFrontIndex а также CurrentRearIndex в -1 поскольку очередь (de) в начале пуста.

AddFirst ()

void addFirst(int a){
    if(CurrentFrontIndex == -1){
        array[++CurrentFrontIndex] = a;
        CurrentRearIndex++;
    }
    else if(CurrentFrontIndex > 0)
        array[--CurrentFrontIndex] = a;
    else
        //cannot add to front
}

addLast ()

void addRear(int a){
    if(CurrentRearIndex == -1){
        array[++CurrentRearIndex] = a;
        CurrentFrontIndex++;
    }
    else if(CurrentRearIndex < array.length - 1)
        array[++CurrentRearIndex] = a;
    else
        //cannot at to rear
}

RemoveFront ()

void RemoveFront(){
    if(CurrentFrontIndex == CurrentRearIndex){
        CurrentFrontIndex = -1;
        CurrentRearIndex = -1;
    }
    else if(CurrentFrontIndex >= 0)
        CurrentFrontIndex++;
    else
        //array is empty; cannot remove
}

void RemoveRear ()

void RemoveRead(){
    if(CurrentRearIndex == CurrentFrontIndex){
        CurrentRearIndex = -1;
        CurrentFrontIndex = -1;
    }
    else if(CurrentRearIndex <= array.length)
        CurrentRearIndex--;
    else
        //array is empty; cannot remove
}

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Несмотря на то, что я ответил на этот вопрос только для того, чтобы выручить вас, вы новичок в этом сайте и просто не знаете норм, задавая вопросы здесь Пожалуйста, проверьте следующие ссылки и следуйте правилам этого сайта в следующий раз ради своей собственной репутации.

Tour - переполнение стека
Как мне задать вопрос
Написание идеального вопроса
Как правильно задавать вопросы

Я бы хотел, чтобы вы признали, что этот ваш вопрос очень плохого качества и практически не подлежит спасению. Если вы продолжаете задавать такие вопросы, вы можете столкнуться с вопросом о запрете.

Другие вопросы по тегам