Java數據結構-線性表之單鏈表應用-重複節點的刪除

整個問題的解題思路如下:

  1. 建立指針p,用於遍歷鏈表;
  2. 建立指針q,q遍歷p後面的結點,並與p數值比較;
  3. 如果q與p值相等,則刪除q。如果q有後繼節點,則將q前驅節點和q後繼節點鏈接起來;否則直接開始下一輪遍歷。

Java代碼實現如下,建議將這段代碼copy到之前的Java版本的LinkedList(FOLinkedList)中。

/**
 * @TODO 重複節點的刪除
 * @param foll 需要刪除重複節點的單鏈表
 * @return foll 刪除重複節點後的單鏈表
 */
public static FOLinkedList removeRepeatElement(FOLinkedList foll){
    FOLinkedNode p = foll.header;
    if(foll.header==null){
        return foll;
    }
    while(p.next!=null){
        FOLinkedNode q = p.next;
        while(q.next!=null){
            if(q.next.getE().equals(p.getE())){
                q.addNext(q.next.next);
                foll.size--;
            }else{
                q = q.next;
            }
        }
        p=p.next;
    }
    return foll;
}

算法的時間性能爲O(n的2次方)

發佈了83 篇原創文章 · 獲贊 13 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章