用單鏈表實現對集合的交,並,差的操作

2021-09-10 01:48:15 字數 2079 閱讀 1570

我是乙個菜鳥本科生,第一次寫部落格,排版有些亂,

和正在學習資料結構的小哥哥們一起交流分享。

用單鏈表實現集合的判等,交,並,差,基本涉及到了單鏈表常用的一些操作,

如建表,插入,刪除,遍歷,都不算太難。

首先建表,在建表的過程中,將集合中的元素存入到了鍊錶中,單此時的鍊錶中的元素是無序的,

在函式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 ...