題目:已知集合a和b的元素分別用不含頭結點的單鏈表儲存,函式difference()用於求解集合a與b的差集,並將結果儲存在集合a的單鏈表中。例如,若集合a=,集合b=,完成計算後a=。
演算法思想:取出集合a中每乙個元素,與集合b中對比,找到即可刪除此節點,否則保留。
prev實現刪除節點後的連線
當prev=null時,說明是首次找到a和b的公有元素,此時*la指向pa->next,*la仍然是頭結點;
當prev!=null時,prev指向pa->next,實現刪除結點的鏈結。
**實現:
#include
#include
#include
typedef struct listnode
node,*pnode,*plist;
void init(plist* pplist)
pnode buynode(int x)
cur->elem = x;
cur->next = null;
return cur;
}void push(plist* pplist, int x)
else
cur->next = newnode; }}
void print(plist plist)
printf("null\n");
}void difference(pnode* la, pnode lb)
else
q = pa; //求差集,即刪除pa結點
pa = pa->next;
free(q);
} else
}}void test()
測試結果:
經典面試題 求解集合A與B的差集
題目 已知集合a和b的元素分別用不含頭結點的單鏈表儲存,函式difference 用於求解集合a與b的差集,並將結果儲存在集合a的單鏈表中。例如,若集合a 集合b 完成計算後a 結構體 struct listnode 請完成函式void difference listnode la listnode...
集合對稱差集和總結
已知兩個列表 l1 2,3,5,8,0 l2 5,3,9,0 找出兩個列表的不同元素 找出兩個列表的共同元素 l1 2 3,5 8,0 l2 5 3,9 0 s1 set l1 s2 set l2 對稱差集 result s1 s2 s1 s2 print result result s1 s2 在...
java 集合 差集 交集 合集 retain
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!listla new arraylist listlb new arraylist la.retainall lb 交集 差集 合集 system.out.println la system.out.println lb 三段 的執行結果分別如下 ...