天大数据结构实验报告一约瑟夫环.docx
- 文档编号:26676091
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:8
- 大小:46.67KB
天大数据结构实验报告一约瑟夫环.docx
《天大数据结构实验报告一约瑟夫环.docx》由会员分享,可在线阅读,更多相关《天大数据结构实验报告一约瑟夫环.docx(8页珍藏版)》请在冰豆网上搜索。
天大数据结构实验报告一约瑟夫环
数据结构上机实验报告
题目:
用单循环链表解决约瑟夫问题
学生姓名
学生学号
学院名称计算机学院
专业计算机科学与技术
时间2013.10.7
目录
第一章、需求分析…………………………………………1
1.1原题表述……………………………………………1
1.2所选的要求及整体规划……………………………1
第二章、概要设计…………………………………………2
2.1抽象数据类型…………………………………………2
2.2算法……………………………………………………2
第三章、详细设计…………………………………………3
3.1程序代码………………………………………………3
第四章、调试分析…………………………………………7
4.1调试工作………………………………………………7
4.2时间复杂度…………………………………………7
第五章、测试结果…………………………………………8
5.1输入数据和输出数据样例…………………………8
第一章需求分析
1.1原题表述
设n个人围坐在一圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局者的下一人重新开始报数,数到第m个人,再让他出局······如此反复,直到所有的人全部出局为止。
1.2所选的要求及整体规划
对于任意给定的n、s和m,求出这个n个人的出局序列,数据结构采用单循环链表。
构造不带头结点的单循环链表。
第二章概要设计
2.1抽象数据类型
不带头结点的单循环链表
2.2算法
建立一个不带头结点的空循环链表,依次在链表中添加数据域为1~n的n个数据元素,此时指针head指向第一个元素,再用一个for循环让头指针head指向第s个元素,之后用while循环让head指向第m-1个元素,删除第m个元素,head指向第m+1个元素,直至链表中只剩一个元素。
依次输出被删除的元素及最后剩余的元素。
第三章详细设计
3.1程序代码
#include
#include
typedefstructnode
{
intdata;
structnode*next;
}node;
//函数功能:
构造不带头结点的循环链表并赋值1~n,头指针head指向第s个人
node*create(intn,ints)
{
node*head;
node*p,*q,*r;
inti,j;
if(n<=0)returnNULL;//若分配内存失败返回
//把长度为n的链表赋值1~n
head=(node*)malloc(sizeof(node));
head->data=1;
head->next=NULL;
p=head;
for(i=1;i { q=(node*)malloc(sizeof(node)); q->data=i+1; p->next=q; p=q; } //构造循环链表 q=(node*)malloc(sizeof(node)); q->data=n; p->next=q; q->next=head;//不带头结点 for(j=1;j { r=head->next; head=r; } returnhead; } intdel(node*head)//删除 { node*p,*q; if(head==NULL)return-1; p=head; q=p->next; p->next=q->next; p=q->next; free(q); head=p; return1; } intmain() { intn,m,s,person; node*head,*r,*p; //输入n、m、s printf("Entern: \n"); scanf("%d",&n); printf("Enterm: \n"); scanf("%d",&m); printf("Enters: \n"); scanf("%d",&s); head=create(n,s);//head指向第s个人 while(head->next! =head)//循环结束后链表只剩一个元素 { //数到第m个删除,head指向m的前一个 for(inti=1;i { r=head->next; head=r; } person=head->next->data; printf("Number%disout\n",person); p=head->next->next; del(head); head=p; } person=head->data; printf("Number%disout\n",person); system("pause"); return0; } 第四章测试分析 4.1调试工作 检测每个循环输出的被删除的元素是否正确,输出结果是否完整 4.2时间复杂度 O(n^2) 第五章输出结果 5.1输入数据和输出数据样例 分别输入参数n、m、s,输出结果如图所示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 实验 报告 约瑟夫