採用遞增有序的順序表表示集合,求解兩個集合的交集
(1)定義順序表的儲存結構;
(2)實現儲存遞增有序集合的順序表的建立、求交集運算;
//採用遞增有序的順序表表示集合,求解兩個集合的交集
//(1)定義順序表的儲存結構;
//(2)實現儲存遞增有序集合的順序表的建立、求交集運算;
# include
# include
# define maxsize 100
//定義順序表的儲存結構
typedef
struct
sqlist;
//建立順序表 ,把陣列的值放進表中
void
createlist
(sqlist *
&l,int a,
int n)
l->length=k;
}//輸出線性表
void
displist
(sqlist *l)
}/*----並集函式:二路歸併演算法 ----*/
void
mergelist
(sqlist *la,sqlist *lb,sqlist *
&lc)
else
if(la->data[i]
>lb->data[j]
)else
if(la->data[i]
=lb->data[j])}
while
(ilength)
while
(jlength)
lc->length=k;
}/*--------交集函式--------*/
void
intersection
(sqlist *la,sqlist *lb,sqlist *
&ld)
else
else}}
ld->length=k;
}/*--------主函式--------*/
intmain()
;int b[4]
=;createlist
(a,a,3)
;createlist
(b,b,4)
;mergelist
(a,b,c)
;printf
("並集:");
displist
(c);
intersection
(a,b,d)
;printf
("交集:");
displist
(d);
}
實驗結果:
採用遞增有序的鍊錶表示集合,求解兩個集合的交集
(1)定義鍊錶的儲存結構;
(2)實現儲存遞增有序集合的鍊錶的建立、求交集運算
#include
#include
//定義單鏈表儲存結構
typedef
struct lnodelinknode;
//尾插法建立單鏈表
void
createlistr
(linknode *
&l,int a,
int n)
r->next=
null;}
//輸出線性表
void
desplist
(linknode *l)
printf
("\n");
}/*並集函式,二路歸併演算法*/
void
mergelist
(linknode *la,linknode *lb,linknode *
&lc)
else
if(pa->data>pb->data)
else
}while
(pa!=
null
)while
(pb!=
null
) r->next=
null;}
//交集函式
void
intersection
(linknode *la,linknode *lb,linknode *
&ld)
else
if(pa->datadata)
else
r->next=
null;}
}//主函式
intmain()
;int b[4]
=;createlistr
(a,a,3)
;createlistr
(b,b,4)
;mergelist
(a,b,c)
;printf
("並集:");
desplist
(c);
intersection
(a,b,d)
;printf
("交集:");
desplist
(d);
}
資料結構實驗報告 資料結構實驗報告
使用c語言中的陣列,實現線性表中的順序結構儲存的查詢 刪除操作。1 初始線性表通過陣列 迴圈 scanf語句實現輸入任意個整數。2 刪除操作的實現,任意輸入乙個要刪除的整數,找到這個元素,將此元素之後的所有元素逐個前移一位,實現刪除操作。3 要求以上2步操作可以重複執行。4 例如 刪除操作執行結果大...
資料結構實驗一 實驗報告
一 實驗目的 複習鞏固vc程式設計環境的使用,以及c 模板設計。1.回顧並掌握vc單檔案結構程式設計過程。2.回顧並掌握vc多檔案工程設計過程 3.掌握vc程式除錯過程。4.回顧c 模板和模板的程式設計。三 實驗內容 1.設計乙個單檔案結構程式完成從鍵盤輸入兩個數,輸出二者的 和 和 積 的結果。要...
資料結構實驗一 實驗報告
一 實驗目的 1 掌握線性表的順序儲存結構 2 驗證順序表及其基本操作的實現 3 理解演算法與程式的關係,能夠將順序表演算法轉換為對應的程式。二 實驗內容 1 建立含有若干個元素的順序表 2 對已建立的順序表實現插入 刪除 查詢等基本操作。三 實驗源 include using namespace ...