使用雜湊表(HashSet)刪除鍊錶中的重複元素

2021-09-02 05:21:21 字數 1023 閱讀 7944

1. 刪除鍊錶中的重複元素

我們可以使用兩種方法去解決:

① 一種是利用雜湊表(hashset),雜湊表特別適合於判斷集合中是否有重複的元素

② 第二種方法是直接使用遍歷鍊錶,使用兩層for迴圈去遍歷再來找出重複的元素,下面使用雜湊表來尋找重複的元素

2. 首先我們要解決幾個問題

① 如何利用陣列來生成乙個鍊錶,這裡我們可以構建乙個啞元(空的節點)來進行陣列中每個元素作為節點的生成

② 有了鍊錶之後我們如何判斷是否有重複元素的問題

首先我們先新建乙個雜湊表,雜湊表其實就是hashset,然後遍歷生成的鍊錶,其中使用到了兩個指標,乙個指向當前的元素,乙個指向前乙個元素,使用兩個指標的目的是為了在發現有重複的元素之後我們可以直接改變指標的指向,即可以將前乙個指標的next直接指向下乙個元素,那麼重複的元素相當於就刪除了,在遍歷的過程中發現雜湊表沒有當前元素即把當前元素加進到雜湊表中,指標往下移動,發現雜湊表中已經存在當前的元素,直接改變前乙個指標的指向,指向當前的指標繼續往下移動等到遍歷完鍊錶之後那麼鍊錶中的元素就沒有重複了

其中比較關鍵的操作是怎麼樣使用鍊錶來刪除元素和怎麼樣使用雜湊表來判斷是否有重複的元素

public class main	}	

public static void main(string args) ;

//利用陣列生成鍊錶

listnode head = new listnode(null);

listnode p = head;

for(int i = 0; i < arr.length; i++)

removerepetition(head);

listnode p1 = head.next;

while(p1 != null)

} private static void removerepetition(listnode head)else

second = second.next;

}first = first.next;

} }}

核心鍊錶使用 刪除鍊錶節點

當我們使用遍歷的方法來刪除鍊錶時 list for each pos,student list list for each pos,head 這個巨集定義是用來遍歷鍊錶的,通過其第乙個引數pos來刪除鍊錶節點,但是,執行後就會出現以下錯誤 unable to handle kernel paging...

核心鍊錶使用 刪除鍊錶節點

核心鍊錶使用 刪除鍊錶節點 當我們使用遍歷的方法來刪除鍊錶時 list for each pos,student list list for each pos,head 這個巨集定義是用來遍歷鍊錶的,通過其第乙個引數pos來刪除鍊錶節點,但是,執行後就會出現以下錯誤 unable to handle...

核心鍊錶使用 刪除鍊錶節點

核心鍊錶使用 刪除鍊錶節點 當我們使用遍歷的方法來刪除鍊錶時 list for each pos,student list list for each pos,head 這個巨集定義是用來遍歷鍊錶的,通過其第乙個引數pos來刪除鍊錶節點,但是,執行後就會出現以下錯誤 unable to handle...