單鏈表在集合中的應用(交 並 差)

2021-10-04 05:35:37 字數 3065 閱讀 7618

#include

using

namespace std;

#define maxsize 20

#define true 1

#define false 0

typedef

bool status;

/* status是函式的型別,其值是函f數結果狀態***/

typedef

char elemtype;

/* elemtype型別根據實際情況而定,這裡假設為int */

typedef

struct node linklist;

void

displaylist

(linklist* list)

cout << endl;

}void

initlist

(linklist*

& list)

void

createlistathead

(linklist*

& list, elemtype arr,

int len)

}void

createlistattail

(linklist*

& list, elemtype arr,

int len)

p->next =

null;}

status listinsert

(linklist*

& list,

int position, elemtype e)

if(count != position -1)

return false;

temp =

new node;

temp-

>data = e;

temp-

>next = p-

>next;

p->next = temp;

return true;

}status listdelete

(linklist*

& list,

int position, elemtype& e)

if(count != position -1)

return false;

temp = p-

>next;

e = temp-

>data;

p->next = p-

>next-

>next;

delete temp;

return true;

}void

clearlist

(linklist*

& list)

}status listempty

(linklist* list)

intlistlength

(linklist* list)

return count;

}status getelem

(linklist* list,

int position, elemtype& e)

e = p-

>data;

return true;

}int

locateelem

(linklist* list, elemtype e)

return0;

}void

destroylist

(linklist*

& list)

/*去兩個集合的合集, la和lb位要去合集的物件, lc為結果*/

void

unionlist

(linklist *la, linklist *lb, linklist *

&lc)

for(i =

1; i <= lenb; i++)}

void

commonlist

(linklist *la, linklist *lb, linklist *

&lc)

}void

differencesetlist

(linklist *la, linklist *lb, linklist *

&lc)

}int

main()

; elemtype list_b[5]

=;createlistattail

(lista, list_a,5)

; cout <<

"線性表a的元素是:"

;displaylist

(lista)

;createlistattail

(listb, list_b,6)

; cout <<

"線性表b的元素是:"

;displaylist

(listb)

;initlist

(listc)

;initlist

(listd)

;initlist

(liste)

;initlist

(listf)

; cout <<

"a ∪ b: "

;unionlist

(lista, listb, listc)

;displaylist

(listc)

; cout <<

"a ∩ b: "

;commonlist

(lista, listb, listd)

;displaylist

(listd)

; cout <<

"a - b: "

;differencesetlist

(lista, listb, liste)

;displaylist

(liste)

; cout <<

"b - a: "

;differencesetlist

(listb, lista, listf)

;displaylist

(listf)

;return0;

}

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

我是乙個菜鳥本科生,第一次寫部落格,排版有些亂,和正在學習資料結構的小哥哥們一起交流分享。用單鏈表實現集合的判等,交,並,差,基本涉及到了單鏈表常用的一些操作,如建表,插入,刪除,遍歷,都不算太難。首先建表,在建表的過程中,將集合中的元素存入到了鍊錶中,單此時的鍊錶中的元素是無序的,在函式sort ...

單鏈表應有之求集合的交並集

1.題目要求 以字元的形式輸入集合a,集合b,求兩個集合的交集 並集。2.題目解析 因為涉及到的資料型別是字元型,所以尤其要主要空格對輸入資料的影響。可以使用 getchar 語句來 吃掉 空格。3.交並集演算法思路 1 並集 設乙個標誌位為0 建議往下看你就會明白為什麼設定乙個標誌位flag 0 ...

順序表集合的交並差操作

1.用順序表表示集合,設計乙個演算法實現集合的求交集運算 void intersection sqlist a,sqlist b,sqlist c int i,j,k k記錄c中的元素個數 for i 0 i2.用順序表表示集合,設計乙個演算法實現集合的求並集運算 void union sqlist...