gpt4 book ai didi

Java - 我正在将堆栈链表修改为队列链表,但我的出队方法仍然表现得像 pop

转载 作者:行者123 更新时间:2023-12-02 14:50:46 24 4
gpt4 key购买 nike

private Node back 尚未使用,enqueue (这是推送)和 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;
}
}

上面是我不太明白的节点内容。

  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;
}

上面是我遇到最多麻烦的地方 - 目前它的行为类似于 pop(获取和删除列表中最后输入的元素)。

  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 为 true(否则为 false)。

}

最佳答案

我对数据结构很烂,但我相信你的入队和出队仍然表现得像弹出和推送。Front 应指向队列的头部,而 tail 应指向最后一个有效对象。所以尾部最终应该指向空..我认为应该是这样的:

  public void enqueue(Dog aDog)
{
Node dogNode = new Node(aDog);

counter++;
if (front == null)
front = back = dogNode;
else
{
back.nextNode = dogNode;
back = dogNode;

}
}
public Node dequeue()
{
if(front == null) return null;
Dog firstDog = front ;
front = front.nextNode;
counter--;
return firstDog;
}

关于Java - 我正在将堆栈链表修改为队列链表,但我的出队方法仍然表现得像 pop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com