我是乙個菜鳥本科生,第一次寫部落格,排版有些亂,
和正在學習資料結構的小哥哥們一起交流分享。
用單鏈表實現集合的判等,交,並,差,基本涉及到了單鏈表常用的一些操作,
如建表,插入,刪除,遍歷,都不算太難。
首先建表,在建表的過程中,將集合中的元素存入到了鍊錶中,單此時的鍊錶中的元素是無序的,
在函式sort_setlist(set *head)中將鍊錶的頭節點作為實參傳遞到函式的形參中,
採用氣泡排序的方法交換節點的資料域中的值,實現鍊錶中的元素從小到大的排序。
在判斷兩個集合是否相等時,分別將集合所對應的兩個鍊錶的頭指標傳遞到判等函式的形參中,
由於此時集合所對應的單鏈表時有序的,所以只要同步掃瞄兩個單鏈表,若從頭至尾每個對應的元素都相等,則判等函式返回真,否則返回假。
在求兩個集合的交集時,我開闢了新的記憶體空間,另建了乙個單鏈表。
#include#include#define set struct set
struct set
;set *creat_setlist(char *name);//建立集合的鍊錶
void print_setlist(set *head); //輸出鍊錶
void sort_setlist(set *head); //集合排序
bool equal_set(set *head_a, set *head_b);//判斷集合是否相等
set *intersection_set(set *head_a, set *head_b);//求兩個集合的交集
set *union_set(set *head_a, set *head_b); //求兩個集合的並集
set *difer_set(set *head_a, set *head_b); //求兩個集合的差集
int main()
}exit:
return 0;
}set *creat_setlist(char *name)//建立集合的鍊錶
tail->next = null;
return head;
}void print_setlist(set *head) //輸出鍊錶
}void sort_setlist(set *head) //集合從小到大排序
end = p;
while (head->next != end)
pre = p;
p = p->next;
} end = pre; }}
bool equal_set(set *head_a, set *head_b)//判斷集合是否相等
pa = pa->next;
pb = pb->next;
} if (pa == null&&pb == null)
else }
set *intersection_set(set *head_a, set *head_b)//求兩個集合的交集
else if(pa->number>pb->number)
else
else
pa = pa->next;
pb = pb->next;
} }end->next = null;
return begin;
}set *union_set(set *head_a, set *head_b) //求兩個集合的並集
else
pa = pa->next;
} pa = begin->next;
while (pb != null)
if (pa == null)
pa = begin->next;
pb = pb->next;
} return begin;
}set *difer_set(set *head_a, set *head_b) //求兩個集合的差集
pb = pb->next;
} pb = head_b->next;
pare = pa;
pa = pa->next;
} return head_a;
}
單鏈表在集合中的應用(交 並 差)
include using namespace std define maxsize 20 define true 1 define false 0 typedef bool status status是函式的型別,其值是函f數結果狀態 typedef char elemtype elemtype型...
c 語言 實現集合的交並差。
c 語言的stl模版庫中 提供了許多模板演算法函式,許多函式不同的用處詳細的需要我們自己把握,就拿取集合的交並差運算來說,肯定有很多種實現方式,我們只需記得函式返回值是乙個迭代器就好。集合的交並差實現 by zhf 2018 03 26 include include include using n...
單鏈表應有之求集合的交並集
1.題目要求 以字元的形式輸入集合a,集合b,求兩個集合的交集 並集。2.題目解析 因為涉及到的資料型別是字元型,所以尤其要主要空格對輸入資料的影響。可以使用 getchar 語句來 吃掉 空格。3.交並集演算法思路 1 並集 設乙個標誌位為0 建議往下看你就會明白為什麼設定乙個標誌位flag 0 ...