[英]The tail is replaced instead of append
我有一个名为public void insertAfterSecondOccurrence(T e1, T e2)
的方法,它会在第二次出现另一个 integer 之后插入一个 integer。但是我的问题是,如果插入的 integer 在列表中最后一个 integer 之前,该方法只会用插入的 integer 替换尾巴而不是附加它。
下面是方法代码:
public void insertAfterSecondOccurrence(T e1, T e2) {
// insert e1 after the second occurence of e2
if(isEmpty()) {
System.out.println("Error the list is empty.");
}
SLLNode<T> p = head;
int count = 0;
for(int i = 0; i < size(); i++) {
if(p.info.equals(e2)) {
count++;
}
p = p.next;
}
if(count <= 1) {
System.out.println("Error there is no sec");
}
SLLNode<T> p2 = head;
SLLNode<T> p3 = head;
SLLNode<T> pred =head;
SLLNode<T> tmp = new SLLNode<T>(e1);
int count2 = 0;
for(int i = 0; i < size(); i++) {
if(p2.info.equals(e2)) {
pred = p2.next;
p3 = p2;
count2++;
}
if(count2 == 2) {
break;
}
p2 = p2.next;
}
pred.next = pred;
pred = pred.next;
p3.next = tmp;
}
我尝试将最后 3 行替换为:
tail.next = tail;
tail = tail.next;
p3.next = tmp;
但它没有用。 这是它应该如何的示例,这是原始数组[ 7 5 3 50 7 9 ]
,在调用方法后它应该是[ 7 5 3 50 7 30 9 ]
,我一直得到的是[ 7 5 3 50 7 30 ]
。
如果您给我基本的答复,我将不胜感激这是我第一次使用该网站,所以我不熟悉该网站中的术语/俚语。
我用这段代码更改了最后 3 行:p3.next = tmp; tmp.next = pred;
并解决了我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.