gpt4 book ai didi

java - 使用链表实现队列

转载 作者:行者123 更新时间:2023-12-01 11:34:03 26 4
gpt4 key购买 nike

我试图了解添加方法如何使用 ListQueue 进行修订。任何帮助都感激不尽。我无法在网上找到任何完整的解释,不幸的是我无法理解它。

private Cell frontCell,backCell; 

@Override
public void add(char x) {
Cell newCell = new Cell(x);
if(frontCell == null){
frontCell = backCell = newCell;
}else{
backCell.next = newCell;
backCell = newCell;
}
}

还有一个内部类“Cell”

 public class Cell{

char data;

Cell next;

public Cell(char data){
this.data = data;
next = null;
}
}

“frontCell”存储队列开头的Cell,“backCell”存储队列末尾的Cell。

“frontCell”引用“backCell”,其中包含刚刚添加的数据。然后,如果添加另一个字符“backCell.next = newCell”和“backCell = newCell”。

队列中前后单元格之间的单元格是如何存储的?

将“frontCell”设置为“backCell”时,引用如何工作?

最佳答案

您的 Cell 类具有每个单元格的 datanext,它引用列表中的下一个单元格,这就是它们链接在一起的方式。

if(frontCell == null) 询问列表是否为空,如果是则 frontCell = backCell = newCell;,这意味着您是新的 Cell添加是列表中唯一的单元格,因此它既是 frontCell 也是 backcell

else 如果列表不为空,backCell.next = newCell; 您要添加的新单元格将通过 backCell 链接到,您的 newCell 是新的 backCell (backCell = newCell;)。

尝试在纸上绘制类似的数据结构(如 this excellent free Data Structures textbook 显示),并按照代码告诉您正在发生的情况尝试添加和删除一些单元格可能会更容易。

关于java - 使用链表实现队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30179339/

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