簡單的舞伴問題實現

2021-07-24 14:16:40 字數 2718 閱讀 7949

西

郵電大

學(計算機學院)

資料結構課內實驗報告

實驗名稱:

舞伴問題

專業名稱:

電腦科學與技術

級:計科1505

學生姓名:

賀遠

學號(8位):

04151154

指導教師:

初建瑋、

曾豔實驗日期:

2023年10

月21日

、10月31日

一.實驗目的

1.通過對佇列的學習,掌握佇列的邏輯結構和儲存結構,並實現舞伴問題。

2.掌握佇列的基本運算。

3.通過應運佇列知識,選擇合適儲存結構,編寫演算法實現舞伴問題,訓練學生的分析和解決實際問題的

能力。二.實驗內容

1.[問題描述

]   

舞伴問題的描述:

假設在週末舞會上,男士們和女士們進入舞廳時各自排成一隊,跳舞開始時,依次從男隊和女隊的隊頭上各出一人配成舞伴,若兩隊初始人數不相同,則較長的那一隊中未配對者等待下一輪舞曲。現要求設計乙個函式模擬上述舞伴配對問題

,試設計程式實現之。

三.實驗方案設計

1.分析 由於

當男女排好隊

後,依次從男隊和女隊的隊頭上各出一人配成舞伴

,剩下的人

繼續按順序配對

,具有典型的先進先出特性,因此可以用佇列作為演算法的資料結構。在演算法中應該先設定兩個佇列:mdancers(mp),

wdancers(wp)

分別存放男士和女士入隊者。假設男士和女士的資訊存放在一位陣列中,作為輸入,然後依次掃瞄該陣列各元素,並根據性別來決定是進入男隊還是女隊。構造好兩個佇列後,依次將兩隊隊頭元素出隊來匹配成舞伴,直至某佇列變為空,此時若某隊仍有待匹配者,輸出等待者的名字。

2.採用的資料結構

typedef struct

person;

typedef struct

mqueue; 3.

演算法實現

①整體結構

main()

②佇列初始化

mqueue *mdancers(mqueue *mp)//佇列初始化

③入隊inmqueue(mqueue *mp,person p)//入隊

else

} ④匹配

dencers(person p[20],int num,mqueue *mp,mqueue *wp)

for(i=0;i//將跳舞者依其性別入隊

printf("匹配結果:

\n");

while(!emqueue(mp)&&!emqueue(wp))

//出隊,輸出下乙個

等待者的名字

if(!emqueue(mp))

if(!emqueue(wp))

}

4.主要演算法流程圖

y            n

n                        y y

y                    n

y         n

四.該程式的功能和執行結果

1. 

2.

3.

五.實驗總結

1.

實驗過程中遇到的問題及解決辦法;

剛開始對佇列結構缺乏清楚的認識,對佇列的操作不太熟練,導致繞了很多彎路,還有就是不了解計算機內部的儲存,開始輸入名字時為了方便,採用字元型別,結果輸入時按空格鍵,導致結果總是出錯,後來向同學諮詢,在同學講解之後明白了其中緣由,經過改正後程式得以正確執行。

2.實驗方案的優點和缺點;

優點是使用了順序佇列實現了舞伴問題,易於理解。

缺點是只能匹配一首歌曲,不能進行迴圈。

3.對設計及除錯過程的心得

體會;從這次實驗,我明白,要學好資料結構必須得親自動手去編寫演算法,平時上課老師講的還能聽懂,感覺教材上的演算法例項沒什麼好寫的。可是經過本次實驗我才發現自己的想法是多麼的無知,就這次實驗的題目,我看了一下覺得沒什麼難度,演算法也挺簡單,結果編寫過程中還是出了許多問題。以後一定要加強動手編寫,不能眼高手低。

佇列 舞伴問題

所有男士女士存放在陣列dancer中,按照性別分為兩個佇列,之後每個佇列各出頭元素進行配對,配對時輸出出對人姓名,最後再輸出剩餘第乙個人的名字。演算法思路 設定兩個佇列分別儲存男女,先依次入隊,只有兩個隊不空則不斷出隊配合,迴圈結束後,輸出非空隊的對頭元素。首先定義乙個人的結構體 typedef s...

佇列 舞伴問題

實驗要求 假設在週末舞會上,男士們和女士們進入舞廳時,各自排成一隊。跳舞開始時,依次從男隊和女隊的隊頭上各出一人配成舞伴。若兩隊初始人數不相同,則較長的那一隊中未配對者等待下一輪舞曲。現要求寫一演算法模擬上述舞伴配對問題。實驗提示 先入隊的男士或女士亦先出隊配成舞伴。因此該問題具體有典型的先進先出特...

舞伴問題(鏈隊)

問題 假設在週末舞會上,男士們和女士們進入舞廳時,各自排成一隊。跳舞開始時,依次從男隊和女隊的隊頭上各出一人配成舞伴。若兩隊初始人數不相同,則較長的那一隊中未配對者等待下一輪舞曲。現要求寫一演算法模擬上述舞伴配對問題 程式功能 能夠使男女依次組合,如若男女相等配對完成,否則輸出等待下一輪的男士或者女...