舞伴問題(鏈隊)

2021-07-05 08:34:31 字數 3163 閱讀 8356

問題:

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

跳舞開始時,依次從男隊和女隊的隊頭上各出一人配成舞伴。

若兩隊初始人數不相同,則較長的那一隊中未配對者等待下一輪舞曲。

現要求寫一演算法模擬上述舞伴配對問題

程式功能:

能夠使男女依次組合,如若男女相等配對完成,否則輸出等待下一輪的男士或者女士。

演算法:

學習佇列於是採用鏈佇列的資料結構儲存資料,結構很好設計,但是其中涉及的一些其他的問題,比如自己新增的輸入0結束;

總結:

1.當使用指向結構體的指標時候,不要忘記對它進行初始化。

是指向乙個已經存在的結構體也好 ,還是指向乙個new動態分配的記憶體也好 ; 都必須要對該指標初始化,千萬不要上來就用,否則會造成引用出錯。

2.其次還要注意的就是要注意野指標,本程式就因為提前釋放了後邊還在引用,導致執行出錯,造成了除錯的困難。為了盡量避免出現野指標要注意釋放後要置空null;

3.最後本程式是自己根據c語言資料結構的教材,自己用c++實現的,個人感覺程式很長,囉嗦不精!歡迎各位指導批評,給出建議!

#include

using namespace std;

#define null 0

//////

//////

//////

//////

//////定義結構型別///

//////

//////

///typedef struct men_node//男士佇列型別

men_node;

typedef struct women_node//女士佇列型別

women_node;

typedef struct

//指向男士的頭尾指標型別

men_q;

typedef struct

//指向女士的頭尾指標型別

women_q;

//////

//////

//////

//////

//////類///

//////

//////

////////

class queue

;///

//////

//////

//////

//////

///建構函式函式///

//////

//////

////////

queue::queue()

;//臨時建立只用於下面的操作

strcpy(manname , name);

strcpy(womenname , name);

}///

//////

//////

//////

//////

///初始化函式///

//////

//////

////////

men_node *queue::create_men()//初始化男士佇列

women_node *queue::create_women()//初始化女士佇列

//////

//////

//////

//////

//////判斷是否隊空///

//////

//////

////////

int queue::empty(men_q *qm)//男士隊空

else

}int queue::empty(women_q *qw)//女士隊空

else

}///

//////

//////

//////

//////

///入隊操作///

//////

//////

////////

void queue::in_queue(men_q *qm)//男士入隊

void queue::in_queue(women_q *qw)//女士入隊

//////

//////

//////

//////

//////出隊操作///

//////

//////

////////

void queue::out_queue(men_q *qm , char ch)//男士出隊

void queue::out_queue(women_q *qw , char ch)//女士出隊

//////

//////

//////

//////

//////如果讀取到0結束輸入,返回1///

//////

//////

////////

int queue::over_manname(men_q *qm)//男士佇列

int queue::over_womenname(women_q *qw)//女士佇列

//////

//////

//////

//////

//////取得未配對的第一人///

//////

//////

////////

char *queue::get_failname(men_q *qm)//取得男士未配對的第一人

char *queue::get_failname(women_q *qw)//取得女士未配對的第一人

//////

//////

//////

//////

//////顯示輸出結果///

佇列 舞伴問題

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

佇列 舞伴問題

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

簡單的舞伴問題實現

西 安 郵電大 學 計算機學院 資料結構課內實驗報告 實驗名稱 舞伴問題 專業名稱 電腦科學與技術 班 級 計科1505 學生姓名 賀遠 學號 8位 04151154 指導教師 初建瑋 曾豔實驗日期 2016年10 月21日 10月31日 一.實驗目的 1.通過對佇列的學習,掌握佇列的邏輯結構和儲存...