private Node back
目前还没有被使用,而enqueue
(之前是push)和dequeue
(之前是pop)除了重命名一些东西以外并没有真正被修改。再次强调,这原本是一个栈,但我正在尝试将其修改为队列。我以前用int
做过非链表队列和栈,但是对于对象和链表,我有点迷失。
public class DogQueue
{
private Node front = null;
private Node back = null;
private Node element = null;
private int counter = 0;
以上只是设置变量。
private class Node //This sets up the Linked List
//Data Structure with nodes.
{
private Dog doggy;
private Node nextNode;
private Node firstNode;
Node(Dog newDog)
{
doggy = newDog;
}
}
我不是很理解上面的Node内容。
public void enqueue(Dog aDog) //This should enqueue
//an object of type Dog.
{
Node dogNode = new Node(aDog);
dogNode.nextNode = front;
counter++;
front = dogNode;
}
上面的代码来自于push方法,只是改了个名字。
public Dog dequeue() //This should output
//the first entry in the list.
{
Dog firstDog = front.doggy;
element = front.firstNode;
counter--;
return firstDog;
}
我在这里遇到最大的问题是上面的代码目前运行像是弹出(获取和移除列表中最后输入的元素)。
public boolean isFull() //Checks to see if List is Full.
{
return ( counter == 5 );
}
我设置了计数器,只让它增加到5,这样我就可以调试isFull函数。
public boolean isEmpty() //Checks to see if List is empty
{
if ( counter == 0 )
{
return true;
} else {
return false;
}
}
这句话的意思是,如果计数器为零,则isEmpty为真(否则为假)。
}