繁体   English   中英

尾部替换为append

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM