约瑟夫环实验报告Word文档格式.docx
- 文档编号:13014817
- 上传时间:2022-10-02
- 格式:DOCX
- 页数:5
- 大小:32.99KB
约瑟夫环实验报告Word文档格式.docx
《约瑟夫环实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《约瑟夫环实验报告Word文档格式.docx(5页珍藏版)》请在冰豆网上搜索。
先构建一个结点的结构体:
typedefstructLNode
{
intnumber;
//代表编号结点的数据
intcode;
//代表密码结点的数据
structLNode*next;
//代表后一个结点的地址
}Linklist;
然后不断生成新结点并连接成链表,最后的结点的next指向第一个结点,从而形成循环链表。
进行操作时,读取出相应结点数据后,将后一个的数据前移,然后释放该结点。
接着继续操作,直到结束。
四.程序设计
#include<
stdio.h>
stdlib.h>
TypedefstructLNode//建立结构体
{
intcode;
structLNode*next;
voidmain()
intm,n,i,num,cod;
Linklist*p1,*p2,*head;
//调用结构体
printf("
m,n:
"
);
scanf("
%d%d"
&
m,&
n);
if(m<
1||n<
1)
{
printf("
Inputerror"
exit
(1);
}
head=(Linklist*)malloc(sizeof(Linklist));
//开辟出第一个单元
if(head==NULL)
{
printf("
error\n"
exit
(1);
}
p1=head;
输入人数与密码:
num,&
cod);
//向链表里输入数据
p1->
number=num;
code=cod;
for(i=1;
i<
n;
i++)
p2=(Linklist*)malloc(sizeof(Linklist));
//每次开辟出一个新单元
if(p2==NULL)
{
printf("
exit
(1);
}
输入人数与密码:
scanf("
p2->
p1->
next=p2;
p1=p2;
next=head;
\n输出顺序:
\n"
while(n>
0)
for(i=1;
m;
p1=p1->
next;
m=p1->
code;
%d"
p1->
number);
p1->
code=p1->
next->
//将下个表里的数据复制进现表,然后删除下一个表,这是因为链表是
number=p1->
number;
//单向循环的,因而如果要删除的是第一个表,原方法不能找到最后一个表
next=p1->
n--;
}
五.实验结果
对比书中的参考数据,可知该程序满足该实验要求。
六.调试分析
1.该程序对数据输入类型要求是整型,对其他类型的输入会出现处理上的错误。
接下来可以在这方面进行改进,从而使程序能对不合法的输入进行反应,而不出现错误的输出或反应。
2.由于刚开始时对循环链表的实现过程不清楚,导致出现无从下手的情况。
在查阅相关资料后,终于可以将想法实现为程序。
3.通过malloc实现动态分配内存,这是数组结构无法实现的,而链表结构中的不同结点的储存地址并不一定相邻,但通过next指向下一个结点,从而实现串联。
七.程序清单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 约瑟夫 实验 报告