思路:
1:設定乙個bo0l性變數 res=true;
2:讀每個單向鍊錶的第乙個字元 *a,*b
3:*a=*b?next():res=false;
4:繼續到2;
我覺得吧,對於像int short等比較好比較的型別的鍊錶,我直接先排序然後再比較。如果是string型別的,也可以操作,比如按照字元的大小進行排序然後在比較,這樣也可以。如果是自定義型別的鍊錶,比如 list,這個時候可以自定義排序的方法,比如按照user id或者username進行排序。
如果不進行排序,那麼只能進行n * m次比較了。其中n m分別為兩個鍊錶的size
不知道還有沒有更加好一點的方法。我覺得應該有~
要是能夠難道這本書的答案就好了。
ps@10-09-25 16:55
將每個節點加入到一顆樹裡面,要是是平衡樹就最好了。每個樹節點包括加入的次數以及是從第乙個鍊錶還是第二個鍊錶加入進來的。
最後進行一次遍歷即可。
合併兩個單向鍊錶
問題一 現在有鍊錶a和鍊錶b,都已經公升序排列,將a和b合併後也按公升序排列。演算法思路一 在鍊錶a中分別取出每個結點,再分別與鍊錶b中的結點進行比較,找到適當位置後插入。這種演算法時間複雜度太高,假如鍊錶a和 鍊錶b的長度分別是m和n,那麼複雜度就是o m n 演算法思路二 鍊錶a和鍊錶b分別有兩...
兩個單向鍊錶的第乙個公共節點
題目 輸入兩個鍊錶,找出它們的第乙個公共節點。鍊錶的定義如下 struct listnode 面試這道題的時候很多的面試者第一反應就是採用蠻力的方法 在第乙個鍊錶上順序遍歷每個節點,每遍歷到乙個節點的時候,在第二個鍊錶上順序遍歷每個節點。如果第二個鍊錶上的節點和第乙個鍊錶上的節點一樣,就說明兩個鍊錶...
兩個鍊錶合併為乙個鍊錶
include include typedef struct node node typedef struct node linklist using namespace std void creat linklist l,int n cout the linklist is full next n...