- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
农夫过河文本文档
// farmerProblem.c
// 用队列解决农夫过河问题
#include stdio.h
#include stdlib.h
typedef int DataType;
//顺序队列:类型和界面函数声明
struct SeqQueue
{
// 顺序队列类型定义
int MAXNUM; // 队列中最大元素个数
int f, r;
DataType *q;
};
typedef struct SeqQueue *PSeqQueue; // 顺序队列类型的指针类型
PSeqQueue createEmptyQueue_seq(int m)
{
//创建一个空队列
PSeqQueue queue = (PSeqQueue)malloc(sizeof(struct SeqQueue));
if (queue != NULL)
{
queue-q = (DataType*)malloc(sizeof(DataType) *m);
if (queue-q)
{
queue-MAXNUM = m;
queue-f = 0;
queue-r = 0;
return (queue);
}
else
free(queue);
}
printf(Out of space!!\n); // 存储分配失败
return NULL;
}
int isEmptyQueue_seq(PSeqQueue queue)
{
//判断队列是否为空
return (queue-f == queue-r);
}
void enQueue_seq(PSeqQueue queue, DataType x)
// 在队尾插入元素x
{
if ((queue-r + 1) % queue-MAXNUM == queue-f)
printf(Full queue.\n);
else
{
queue-q[queue-r] = x;
queue-r = (queue-r + 1) % queue-MAXNUM;
}
}
void deQueue_seq(PSeqQueue queue)
// 删除队列头部元素
{
if (queue-f == queue-r)
printf(Empty Queue.\n);
else
queue-f = (queue-f + 1) % queue-MAXNUM;
}
DataType frontQueue_seq(PSeqQueue queue)
{
if (queue-f == queue-r)
printf(Empty Queue.\n);
else
return (queue-q[queue-f]);
}
//个体状态判断函数
int farmer(int location)
{
//判断农夫的位置
return (0 != (location 0x08));
}
int wolf(int location)
{
//判断狼的位置
return (0 != (location 0x04));
}
int cabbage(int location)
{
//判断白菜的位置
return (0 != (location 0x02));
}
int goat(int location)
{
//判断羊的位置
return (0 != (location 0x01));
}
//安全状态的判断函数
int safe(int location)
{
// 若状态安全则返回true
if ((goat(location) == cabbage(location)) (goat(location) != farmer
(location)))
return (0);
// 羊吃白菜
if ((goat(location) == wolf(location)) (goat(location) != farmer
(location)))
return (0);
// 狼吃羊
r
您可能关注的文档
最近下载
- 2023年阳江市社区工作者招聘考试真题 .pdf VIP
- 《高效课堂和有效教学模式研究》结题报告材料.pdf VIP
- 生猪、牛、羊、鸡、鸭、鹅屠宰HACCP计划模式表.pdf VIP
- 2024-2025学年广西壮族自治区小升初英语真题(含答案).pdf VIP
- 环保项目设备供货及服务保障措施.docx VIP
- 初中物理每日默写知识点(1)_Decrypted.pdf VIP
- 人教版信息科技四年级《多彩的数字世界》教学PPT课件.pptx VIP
- 我的幸福大家庭.pptx VIP
- 安全教育开学第一课主题班会PPT课件.pptx VIP
- (2025秋新版)人教版数学二年级上册教学计划.docx VIP
文档评论(0)