我在java中编写一个方法来删除列表中的同一个char(只保留一个)。
这是方法:
public void deleteSameInSortedList(){
CharNode p=head.getNext();
CharNode temp=p;
for(p = head; p != null; p = p.getNext()){
temp=p;
while(p.getNext()!=null&& p.getLetter()==p.getNext().getLetter()){
System.out.println(p.getLetter());
p=p.getNext();
}
////我认为这会导致无限循环。
temp.setNext(p);
}
}
但这是如何使节点打印到下一个不相同的节点。 我是否因为我的代码而感到不自在? 我该怎么做才能完成这项任务?
答案 0 :(得分:1)
也许你应该用伪代码或人类可读的语言写下你想要达到的目标以及如何做到这一点。类似的东西:
Iterate over each element
If the element's value is the same as the next element's value
If there is an element after the next one
Set the next element pointer of the current element to the element after the next one
Else
Set the next element pointer to null
更多评论:
答案 1 :(得分:0)
发生了无限循环,因为当代码到达的节点之后没有相同的字母,然后是节点之后,他无法将节点设置为指向他自己。
这就是为什么我创建了一个标志(布尔值),它将跟踪我们何时需要设置一个节点。
Toolbar