資料結構 舞伴問題 佇列

2021-10-23 10:29:15 字數 1744 閱讀 5320

舞伴問題

假設在週末舞會上,男士們和女士們進入舞廳時,各自排成一隊,男女人數不一定相等。

跳舞開始時,依次從男隊和女隊的 隊首上各出一人配成舞伴。 舞曲結束後,男女各自入隊。

現在用小寫字母表示男士,大寫字母表示女士,

試輸入乙個字串,按照大小寫將男女歸入兩個佇列,

試寫出當所有人都至少跳舞一次時,舞伴的組合情況。

測試樣例格式說明:

[鍵盤輸入]

用字串表示的當天舞者序列;

[正確輸出]

舞伴組合情況

測試樣例:

[第一組自測資料]

[鍵盤輸入]

abcdefgih

[正確輸出]

a - d

b - g

c - h

e - d

f - g

i - h

[第二組自測資料]

[鍵盤輸入]

abcdef

[正確輸出]

a - b

c - d

a - e

c - f

*/

/*int 型別陣列也可以儲存讀入的字元char型別,也可將int修改為char*/

#define maxlen 100

#define empty_queue_error -9999999

typedef

int elemtype;

typedef

struct

intqueue;

/*初始化(調整兩個位置標識量)*/

void

initqueue

(intqueue* pqueue)

// 指標型別作為形參,某個佇列例項的位址

/*對頭元素出佇列*/

intdequeue

(intqueue* pqueue)

return empty_queue_error;

}/*入佇列

將某資料元素x入佇列,成功返回1,失敗返回0。*/

intenqueue

(intqueue* pqueue, elemtype x)

return1;

}/*(9)求取佇列長度(重要)

返回佇列中元素的個數

*/int

queuelen

(intqueue* q)

void

dance_match()

else

if(c >=

'a'&& c <=

'z')

} lenmale =

queuelen

(&qmale)

; lenfemale =

queuelen

(&qfemale)

;printf

("輸出配對結果:\n");

while

(lenfemale || lenmale)

//若雙方均為0,就不再進入迴圈了

//if

/*lenmale與lenfemale一方為0,另一方非0*/

elseif(

!lenmale && lenfemale)

/*如果男士先完成遍歷*/

資料結構之舞伴配對問題

有多個男生和女生,要求為男女生進行選舞伴的配對,輸出的結果根據自己的設計而定,我制定的問題是,輸入乙個數字 代表第幾支舞曲 然後輸出在此曲中跳舞的男女生的配對情況。沒有用迴圈佇列,用的鏈隊。include using namespace std typedef struct person typed...

佇列 舞伴問題

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

佇列 舞伴問題

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