《数据结构》课程常见问题
----单元 24 农夫过河问题
1.农夫过河问题的求解?
解析:
一、需求分析
1.本演示程序中,是解决农夫、狼、羊和白菜过河问题。一个农夫带着一只狼,一只羊和一些菜过
河,河边只有一条木船,由于船太小,只能装下农夫和他的一样东西,在无人看管的情况下。狼要吃羊
羊要吃菜,请问农夫如何菜能使三样东西平安过河?
2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键
盘上输入演示程序中规定的运算命令;相应的输入数据(滤去输入中的非法字符)和运算结果显示在其后。
3.程序执行的命令包括:
1)构造集合 1;2)构造集合 2;3)求并集;4)求交集;5)求差集;6)结束。
“构造集合 1”和“构造集合 2”时,需以字符串的形式键入集合元素。
4.测试数据
(1)Set1=“magazine”,Set2=“paper”,
Set1∪Set2=“aegimnprz”, Set1∩Set2=“ae”,Set1-Set2=“gimnz”;
(2)Set1=“012oper4a5tion89”, Set2=“error data”,
Set1∪Set2=“adeinoprt”, Set1∩Set2=“aeort”, Set1-Set2=“inp”。
二、程序的模块结构
本程序包含四个模块:
1)主程序模块:
void main(){
初始化;
dc{
接受命令;
处理命令;
}while(“命令”=“退出”);
}
2)集合单元模块――实现集合的抽象数据类型;
3)有序表单元模块――实现有序表的抽象数据类型;
4)结点结构单元模块――定义有序表的结点结构。
各模块之间的调用关系如下:
有序表单元模块
主程序模块
集合单元模块
结点结构单元模块