gpt4 book ai didi

java - java中链表的实现

转载 作者:行者123 更新时间:2023-12-01 18:45:24 26 4
gpt4 key购买 nike

我尝试使用 Node 类在 java 中实现链表,并仅保留指向链表开头的单个链接(我们称其为“第一个”) )。

我需要处理 2 个案例 -

1.当链表为空时 - 在这种情况下我需要在“第一个”创建一个新节点

2.当链表中有节点时

我尝试按如下方式对其进行编码..但我想知道这是否是标准方法..处理第一种情况的代码块看起来有点丑陋..

执行此操作的标准方法是什么?

public class MyLList<Item>{
Node first;

public void insertAtBeginning(Item item){
Node old = first;
first = new Node();
first.item = item;
first.next = old;
}

public void insertAtEnd(Item item){
Node t = first;
while(t!=null && t.next!=null){
t=t.next;
}

if(t==null){
first = new Node();
first.item = item;
return;
}
Node old = t;
t = new Node();
t.item = item;
old.next = t;
}

public void traverse(){
for(Node x=first;x!=null;x=x.next){
System.out.print(x.item+" ");
}
}

private class Node{
Item item;
Node next;
}


public static void main(String[] args) {
MyLList<String> ll = new MyLList<String>();

ll.insertAtEnd("X");
ll.insertAtBeginning("B");
ll.insertAtEnd("Y");
ll.traverse();

}

}

最佳答案

您可以将其更改为更清晰:

public void insertAtEnd(Item item){
if (first == null)
insertAtBeginning(Item item);
else{
Node t = first;
while(t!=null && t.next!=null){
t=t.next;
}

Node old = t;
t = new Node();
t.item = item;
old.next = t;
}
}

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

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