Avec cette implémentation d'un LinkedQueue, toutes les méthodes sauf la méthode pop() fonctionnent bien. Lorsque vous utilisez la fenêtre contextuelle() méthode toutes les valeurs de la pile disparaître ce qui en fait vide quand il est censé enlever la première valeur queméthode pop dans implémentée LinkedQueue est en train de supprimer toutes les valeurs et non la première
Voici la classe LinkedQueue
import java.util.NoSuchElementException;
public class LinkedQueue
{
Node front, rear;
int size;
public LinkedQueue()
{
front = null;
rear = null;
size = 0;
}
public boolean isEmpty()
{
if(front == null)
return true;
else
return false;
}
public int getSize()
{
return size;
}
public void push(int data)
{
Node n = new Node(data);
if(isEmpty())
front = rear = n;
else
{
rear.setLink(n);
rear = n;
}
size++;
}
public int pop()
{
Node temp = new Node(front.getData());
if(isEmpty())
{
throw new IllegalAccessError();
}
else
{
front = temp.getLink();
size--;
}
return temp.getData();
}
public int peek()
{
if (isEmpty())
{
throw new NoSuchElementException("Stack is empty.");
}
else
{
return front.getData();
}
}
public String toString()
{
Node tempFront = front;
String returnStr = "Stack: [";
while(tempFront != null)
{
returnStr += tempFront.getData() + ", ";
tempFront = tempFront.getLink();
}
returnStr += "]";
return returnStr;
}
}
Voici le pilote utilisé pour la classe LinkedQueue:
import java.util.Scanner;
public class Driver
{
public static void main(String[] args)
{
//declare variables and initialize scanner
Scanner key = new Scanner(System.in);
int size, choice, value, end;
end = 0;
//declare and initialize the stack
LinkedQueue queue1 = new LinkedQueue();
//loop to continue operations
while(end == 0)
{
//print out menu for commands
System.out.println("\t1) Push \n\t2) Pop \n\t3) Peek \n\t4) Size \n\t5) isEmpty \n\t6) End");
System.out.print("Please choose an option: ");
choice = key.nextInt();
//switch the choice and execute commands
switch (choice)
{
case 1: System.out.println("Please enter a value: ");
value = key.nextInt();
queue1.push(value);
System.out.println(queue1.toString());
break;
case 2: queue1.pop();
System.out.println(queue1.toString());
break;
case 3: queue1.peek();
System.out.println(queue1.peek());
System.out.println(queue1.toString());
break;
case 4: System.out.println("Size: " + queue1.getSize());
System.out.println(queue1.toString());
break;
case 5: if(queue1.isEmpty())
{
System.out.println("Stack is empty.");
}
else
System.out.println("Stack is NOT empty.");
System.out.println(queue1.toString());
break;
case 6: end = 1;
System.out.println("Goodbye!");
break;
}
}
}
}
J'ai aussi fait ma propre classe Node
public class Node
{
int data;
Node link;
//contructor
public Node(int d)
{
data = d;
link = null;
}
public int getData()
{
return data;
}
public Node getLink()
{
return link;
}
public void setData(int d)
{
data = d;
}
public void setLink(Node n)
{
link = n;
}
}
Comme mentionné précédemment, le seul problème que j'ai est avec la méthode pop(), mais si vous voyez d'autres erreurs qui vont également aider, ce serait très apprécié.