【发布时间】:2012-02-27 03:08:21
【问题描述】:
我想从排序的链表 {0 1 2 2 3 3 4 5} 中删除重复项。
`
public Node removeDuplicates(Node header)
{
Node tempHeader = null;
if(header != null)
tempHeader = header.next;
else return header;
Node prev = header;
if((tempHeader == null)) return header ;
while(tempHeader != null)
{
if(tempHeader.data != prev.data)
{
prev.setNext(tempHeader);
}
tempHeader = tempHeader.next;
}
prev = header;
printList(prev);
return tempHeader;
}
`
prev.setNext(tempHeader) 在 while 循环中无法正常工作。理想情况下,当 prev = 2 和 tempHeader = 3 时,prev.next 应该是数据 = 3 的节点。
Printlist 函数只获取标题指针并打印列表。
节点定义如下。
public class Node
{
int data;
Node next;
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
【问题讨论】:
-
这是作业吗?如果是这样,请用 [homework] 标签标记它。
-
这是作业还是你为什么不用java.util.*
-
不,这不是家庭作业。我在 stanford 网站上找到了一份 PDF,其中包含 18 个链表问题,其中之一是 removeDuplicate 程序。链接在这里; cslibrary.stanford.edu/105/LinkedListProblems.pdf
-
你没有在任何地方调用 prev.next。您只是在 while 循环中调用 prev.setNext(tempHeader)。
标签: java