数据结构实验报告-稳定婚姻匹配问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与程序设计实验实验报告
哈尔滨工程大学
printf("输入第%d个女孩的优先表:\n",x);
for(y=0; y scanf("%d", &(ladayArray[x][y])); } } for(x=0; x ladayNow[x] = NIL;//女生对应的男生 manPerfer[x] = 0;//每位男生选中的女生 manStartPos[x] = 0;//记录每位男生选取的是心目中第几位的女生 } //进行第一轮迭代,每个男生都选择自己名单上排在首位的女生。 for(int pos=0; pos ChoosePartener(manStack, pos, manArray, ladayArray, manPerfer, manStartPos,ladayNow, NUM); } //如果还有单身男生,重复进行选择过程 while(manStack.size()!=0){ int manPos = manStack.top(); manStack.pop(); ChoosePartener(manStack, manPos, manArray, ladayArray, manPerfer, manStartPos,ladayNow, NUM); } printf("\n稳定匹配:\n"); for(int i =0;i cout<<"男孩: "< } return 0; } 四、运行测试与分析 1. 输入男女人数 2. 输入男生优先表 3. 输入女生优先表 4. 输出稳定婚姻匹配结果 五、实验收获与思考 通过本次实验,巩固了关于查找算法的知识,同时在编程过程中发现了自己的不足,遇到了很多语法错误及逻辑错误,通过不断的调试解决问题,使我对编程有了更加深入的体会和认识。 六、源代码 #include #include #include using namespace std; #define MAX 10 #define NIL -1 int manArray[MAX][MAX]; int ladayArray[MAX][MAX]; int manPerfer[MAX]; //每位男生选中的女生 int manStartPos[MAX];//记录每位男生选取的是心目中第几位的女生 int ladayNow[MAX]; //女生对应的男生 stack int GetPositionFromLaday(int ladayArray[][MAX], int laday, int man, int NUM){ for(int i=0; i if(ladayArray[laday][i] == man) return i; return NIL; } void ChoosePartener(stack int ladayArray[][MAX], int manPerfer[], int manStartPos[], int ladayNow[], int NUM)