Как определить методы 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 - переполнение стека
♦ Как мне задать вопрос
♦ Написание идеального вопроса
♦ Как правильно задавать вопросы
Я бы хотел, чтобы вы признали, что этот ваш вопрос очень плохого качества и практически не подлежит спасению. Если вы продолжаете задавать такие вопросы, вы можете столкнуться с вопросом о запрете.