【发布时间】:2013-04-03 18:39:35
【问题描述】:
我以为我有这个程序可以运行,但不幸的是我忽略了一些东西。如何删除第一个节点并将第二个节点转换为链表的前面。我尝试了多种方法,但最终得到相同的结果。(LinkedList 保持不变)任何指导将不胜感激。
节点类
public class Node {
private String data;
private Node next;
Node(String data, Node next)
{
this.data = data;
this.next = next;
}
public void setData(String d)
{
data = d;
}
public void setNext(Node n)
{
next = n;
}
public String getData()
{
return data;
}
public Node getNext()
{
return next;
}
主要
public static void main(String[] args) {
Node list = new Node("NODE 1",new Node("NODE 2",new Node("NODE 3", null)));
list = insertSecond(list,"New Node");
list = addLast(list,"LAST NODE");
printList(list);
System.out.println();
deleteNode(list, "NODE 1");
printList(list);
}
public static Node deleteNode(Node list,String str)
{
Node temp = list;
Node prev = list;
while(temp != null)
{
if(temp.getData().equals(str))
{
if(temp.getData().equals(list.getData()))
{
list = list.getNext();
return deleteNode(list,str);
}
else
{
prev.setNext(prev.getNext().getNext());
}
}
prev = temp;
temp = temp.getNext();
}
return list;
【问题讨论】:
-
虽然这在技术上是一个节点列表,但最好有一个
NodeList类来保持对列表头部和尾部的引用。然后你可以将 head 引用指向head.next元素 -
我在stackoverflow.com/questions/15792682/…的回答中回答了这个问题
-
Dwb 你做了,你的解释在它背后的理论中很清楚,但我不能用适当的语法来删除第一个节点并使下一个节点成为头。
标签: java linked-list nodes