下载此文档

约瑟夫环实验报告.docx


文档分类:建筑/环境 | 页数:约8页 举报非法文档有奖
1/8
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/8 下载此文档
文档列表 文档介绍
约瑟夫环实验报告
实验一线性表的基本操作及其应用
一、实验目的
1、帮助读者复习C++语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实限和人数
printf("\n参数m,n传递报数上限和人数.\n\n请输入m和n:\n");
scanf("%d %d",&m,&n);
creatLinkList(n);//带哦用创建链表函数
enterPwd(n);//调用输入密码函数
printf("\n出列的人依次是:\n");
outList(m,n);
}
2)创建链表函数creatLinkList()——根据用户输入的人数创建人数相等数量结点的循环链表。
3)输入密码函数enterPwd()——根据用户输入的密码,存入相应结点的数据域pwd;
4)输出出列人的序号函数outList(m,n)
3、核心算法
根据用户输入的报数上限以及人数,在一个循环里面循环和人数相等的次数。这个循环里面还有一个小的循环用于找到每次出列的结点,小循环找到了出列结点的上一个结点。然后记下这个结点,接着去除要出列结点的数据域里的pwd,然后free ()这个结点。开始找下一个出列的结点。
for(i=1;inext;
}
p=pt->next;
m=p->pwd;
printf("%d",p->num); //输出人的序号
pt->next=p->next;
free(p); //释放动态申请的结点空间
四、调试分析
1、在编译时发现没有导入#include
2、在调试的时候发现不需要头结点的。
五、实验结果
,密码分别为3,6,5,7,8,2,1,。
2. 输入报数上限为7和人数为6,密码分别为3,4,5,1,2,。

图1 实验结果

图2 实验结果
六、总结
1.在编程解决约瑟夫环的问题的时候用到了单向循环链表,自己在开始的时候使用了头结点,然后对它循环查找出列的结点的时候不知道怎
么忽略它,最后省略了头结点。
2.在建立单向循环链表的时候不够熟练,导致链表在报数的时候找不到头指针,并且指针的操作上还有待改进,不能完全灵活使用。
3.在查找出列结点的时候容易出错,我在写代码的时候只剩下两个数的时候出错了。后来我在要删除的结点前面加了个指针p,才使程序运
行成功。
4.通过这个这个实验,我对链表的各种操作更加熟悉。
七、源程序(带注释)
#include
#include
//元素类型。节点类型,指针类型,
typedef struct LNode
{
int num,

约瑟夫环实验报告 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数8
  • 收藏数0 收藏
  • 顶次数0
  • 上传人hh思密达
  • 文件大小13 KB
  • 时间2022-04-12