1. 程式人生 > >刪除兩個雙向連結串列值相同的結點

刪除兩個雙向連結串列值相同的結點

有雙向迴圈連結串列結點定義為:
    struct node
    { 
         int data;
         struct node *front,*next;
    };

    有兩個雙向迴圈連結串列A,B,知道其頭指標為:pHeadA、pHeadB,請寫一函式將兩連結串列中data值相同的結點刪除。

思路1: 遍歷A的每個結點x,針對x,遍歷B的每個結點,發現值相同,則用set<int>記錄相同值。

記錄了所有相同值後依次遍歷A,B,刪除與set<int>相同的結點,時間複雜度為O(n+m),空間複雜度為O(k),k為相同結點值數。

思路2:遍歷A的每個結點,將其值和結點記錄到hash_map<int, node*>中,然後遍歷B,將相同data的部分刪除,時間複雜度O(n+m),空間複雜度為O(n)。