java - 如何在没有包装类的情况下修改 LinkedList 的头部?
问题描述
当我创建一个 Node 对象并调用“appendToTail”时,Node 对象通过 next 属性具有一系列节点(如预期的那样)。我尝试创建一个弹出窗口,它获取头部(又名“this”)并用变量引用它并用它的下一个覆盖它。但是,“this”与原来的头像相同。我做错了什么,或者没有办法修改“这个”?
public class Node {
Node next = null;
int data;
public Node(int d) {
data = d;
}
public void appendToTail(int d) {
Node end = new Node(d);
Node n = this;
while (n.next != null) {
n = n.next;
}
n.next = end;
}
public void popHead() {
Node n = this;
n = n.next;
}
}
解决方案
基本上,您需要构建一个自定义列表并在 End 处添加每个节点。您还需要存储第一个节点才能获得循环的起点。
public class NodeList
{
Node head=null;
public static void main(String args[])
{
NodeList nl = new NodeList();
nl.addNode(1);
nl.addNode(2);
nl.addNode(3);
nl.listNodes();
}
public void addNode(int data)
{
if(head==null)
{
head = new Node(data);
}
else
{
Node curent = head;
while(curent.next != null)
{
curent = curent.next;
}
curent.next = new Node(data);
}
}
public void listNodes()
{
if(head !=null)
{
Node curent = head;
System.out.println(curent.data);
while(curent.next !=null)
{
curent = curent.next;
System.out.println(curent.data);
}
}
}
class Node
{
Node next = null;
int data;
public Node(int d) {
data = d;
}
}
}
输出
1
2
3
推荐阅读
- java - Java:对列表进行排序随机数的范围+组织它(BubbleSort)+获取最大的生成数
- python - 使用 Python 代码计算产品的折扣
- javascript - 是否可以在 Javascript 对象中添加动态字段名称?
- php - 将站点从 Server 2003 移动到 Server 2008 后,Joomla 站点组件无法正常工作
- c# - 级联删除在 EF Core 3 中似乎对我不起作用
- python - 如何找到矩阵中每一列的绝对值之和的最大值
- sql - 确定 SQL Server 中浮点数的长度
- cmake - 向后兼容的`add_compile_definitions`
- javascript - Ping 问题 discord.js
- php - 无法添加或更新子行:外键约束失败 - Laravel 7