Joseph环课程设计报告
数据结构课程设计 约瑟夫环问题(报告+代码)

学院计算机与信息工程系数据结构课程设计设计题目:约瑟夫环问题专业班级学号姓名指导教师2010年12月20日约瑟夫环一.实验目的:本实验是设计一个可以解决约瑟夫环问题的程序。
此程序要求利用单向循环链表存储结构模拟此过程,按照出列的顺序印出个人的编号。
二.实验环境:VC2008.三.试验步骤:1.问题分析和任务定义本实验要求设计一个程序解决约瑟夫环问题,且要利用单向循环链表存储结构模拟此过程。
这就要求我们必须用链表结构而不能用像数组等其它结构。
首先输入的数据必须是整型且是整数,同样输出的也必须是整型且整数;其次也要备好测试数据(包括合法的输入数据和非法形式输入的数据)以此来检查程序是否符合要求;最后2.数据类型和系统设计链表存储结构的定义:typedef struct Node{}SeqList链表的建立:SeqList * Creat(int num){}链表的输出:void OutQueue(SeqList * tail, int num, int code){}3.详细设计:#include <stdio.h>#include <stdlib.h>typedef struct Node{int num;int code;struct Node * next;}SeqList;SeqList * Creat(int);void OutQueue(SeqList *, int , int );int main(){int n,m,i;printf( " 姓名:徐正杰学号:090502201:\n");printf("Input The Number of People, Frist Code:");{int num = 0,code = 0;scanf("%d%d",&num, &code);{SeqList * tail = NULL;tail=Creat(num);OutQueue(tail, num, code);}}return 0;}SeqList * Creat(int num){getchar();SeqList * tail = NULL;tail=(SeqList *)malloc(sizeof(SeqList));{int i = 1, code = 0;printf("Input Num.%d Code:", i);scanf("%d", &code);tail->num = i;tail->code = code;tail->next = tail;{SeqList * p = NULL;for(i = 2; i <= num; ++i){p = (SeqList *)malloc(sizeof(SeqList));if(p){printf("Input Num.%d Code:", i);scanf("%d", &code);p->num = i;p->code = code;p->next = tail->next;tail->next = p;tail = p;}else{perror("Out of menroy!");getchar();exit(1);}}}}return(tail);}void OutQueue(SeqList * tail, int num, int code) {printf("Out of Queue:");{SeqList * p;while(tail - tail->next){code=(code-1)%num+1;{int i;for(i = 1; i < code; ++i){tail = tail->next;}}p = tail->next;printf("%d,", p->num);tail->next = p->next;code = p->code;free(p);p = NULL;--num;}}printf("%d.",tail->num);free(tail);tail = NULL;}4.调试分析在本次试验调试中很不顺利。
c课程设计约瑟夫环

c 课程设计约瑟夫环一、教学目标本课程的目标是让学生理解和掌握约瑟夫环的原理及其在计算机科学中的应用。
知识目标包括:了解约瑟夫环的概念、算法实现和数学原理;技能目标涵盖:能够使用至少一种编程语言实现约瑟夫环算法,并进行简单的性能分析;情感态度价值观目标强调:培养学生的逻辑思维能力,激发他们对计算机科学和算法研究的兴趣。
二、教学内容教学内容围绕约瑟夫环的理论基础和实际应用展开。
首先介绍约瑟夫环的基本概念,然后通过编程实践让学生深入理解算法的工作原理。
具体包括:1.约瑟夫环的定义及其在计算机科学中的应用。
2.约瑟夫环算法的不同变体及其实现方法。
3.循环队列的概念及其在约瑟夫环算法中的作用。
4.通过编程练习,掌握至少两种不同的编程语言实现约瑟夫环算法。
三、教学方法为了提高学生的理解能力和实践技能,将采用多种教学方法相结合的方式:1.讲授法:用于解释约瑟夫环的基本概念和数学原理。
2.案例分析法:通过分析具体的约瑟夫环应用实例,加深学生对知识点的理解。
3.实验法:安排实验室实践环节,让学生亲自编写代码实现算法。
4.分组讨论法:鼓励学生在小组内交流想法,共同解决问题,培养团队协作能力。
四、教学资源为了支持课程的顺利进行,将准备以下教学资源:1.教材:《计算机科学基础》相关章节。
2.参考书籍:提供关于算法和数据结构的进阶阅读材料。
3.多媒体资料:制作PPT和视频教程,辅助学生理解复杂概念。
4.编程环境:为学生提供合适的编程环境和在线编程平台。
5.实验设备:确保实验室中每名学生都有足够的机器进行编程实践。
五、教学评估教学评估是衡量学生学习成果的重要手段。
本课程的评估方式包括:平时表现(30%)、作业(20%)、小测验(20%)、实验报告(20%)和期末考试(10%)。
平时表现评估将基于学生的课堂参与、提问和小组讨论;作业将主要是编程练习,旨在巩固课堂所学;小测验将定期进行,以检查学生的理解程度;实验报告将评价学生对实验操作的理解和分析能力;期末考试将涵盖所有课程内容,测试学生的综合理解能力。
约瑟夫环课课程设计

约瑟夫环课课程设计一、教学目标本节课的教学目标是让学生掌握约瑟夫环的基本概念、算法及其应用。
通过本节课的学习,学生应能够理解约瑟夫环的原理,运用约瑟夫环算法解决实际问题。
具体来说,知识目标包括:1.了解约瑟夫环的定义及其数学基础;2.掌握约瑟夫环算法的实现方法及其时间复杂度;3.能够运用约瑟夫环算法解决生活中的排队问题。
技能目标包括:1.能够使用编程语言实现约瑟夫环算法;2.能够分析代码的执行过程,优化算法性能;3.能够将约瑟夫环算法应用到实际问题中,解决问题。
情感态度价值观目标包括:1.培养学生对计算机科学的兴趣,激发学生主动探究的精神;2.培养学生团队协作意识,提高学生沟通表达能力;3.培养学生解决问题的能力,增强学生面对挑战的信心。
二、教学内容本节课的教学内容主要包括约瑟夫环的定义、算法及其应用。
具体安排如下:1.引言:介绍约瑟夫环的背景知识,激发学生兴趣;2.约瑟夫环的定义:讲解约瑟夫环的数学基础,让学生理解其含义;3.约瑟夫环算法:讲解约瑟夫环算法的实现方法,让学生掌握算法步骤;4.算法优化:分析算法的时间复杂度,引导学生思考如何优化算法;5.应用实例:介绍约瑟夫环算法在实际问题中的应用,让学生学会解决问题;6.课堂练习:安排练习题,让学生巩固所学知识。
三、教学方法为了提高教学效果,本节课采用多种教学方法相结合的方式:1.讲授法:讲解约瑟夫环的基本概念、算法及其应用;2.讨论法:学生分组讨论,培养学生的团队协作能力;3.案例分析法:分析实际问题,引导学生将理论知识应用于实践;4.实验法:安排课堂练习,让学生动手实践,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,本节课准备以下教学资源:1.教材:提供约瑟夫环相关知识的文本资料;2.参考书:为学生提供更多的学习资料,拓展知识面;3.多媒体资料:制作PPT,生动形象地展示约瑟夫环的原理和应用;4.实验设备:提供计算机等设备,让学生动手实践。
C语言课程设计报告(约瑟夫环)胡存夫

C语言课程设计报告(约瑟夫环)胡存夫沈阳航空航天大学课程设计报告课程设计名称:C语言课程设计课程设计题目:约瑟夫环院:计算机学院专业:计算机科学与技术班级:3410301学号:2013040103023姓名:胡存夫指导教师:丁一军沈阳航空航天大学课程设计报告目录 1 课程设计介绍............................................................... ............................................. 1 课程设计内容及要求............................................................... ............................. 1 系统需求............................................................... ................................................. 1 2 课程设计原理............................................................... ............................................. 3 课设题目粗略分析............................................................... ................................. 3 功能模块图............................................................... ...................................... 5 流程图分析............................................................... ...................................... 5 3 调试与分析............................................................... ............................................... 10 调试过程............................................................... .. (10)沈阳航空航天大学课程设计报告原理图介绍第三步:第二次,1号出列 1 3 1 2 约瑟夫环原理演示图 3 4 5 6 7 7 2 4 8 4 第一步:给第一个人赋初始密码为:20则从它开始向下走20次,到6第四步:第三次,4号出列最后排序后的密码序列:第二部:第一次停下的位置,此时6号出列,并将他的值作为新的m值,即:新的m=8;从7好开始继续向下走8次,到18 6 3 1 2 4 4 7 1 2 7 3 4 5 图约瑟夫环原理演示图 4 沈阳航空航天大学课程设计报告功能模块图Case 1:一个简单的输出函数,用于说明约瑟夫环;void instruction() Case 2:建立的约瑟夫环,并输出已建立的约瑟夫环:createList(LNode **ppHead,int n) 输出该约瑟夫环的每个人的出列顺序: jose(LNode *ppHead,int Case 0:default : 输入0,退出exit(0);主函数调用函数;main() 菜单函数;void menu() 图约瑟夫环函数调用关系图流程图分析 5 沈阳航空航天大学课程设计报告1. Main()函createList; 创建储存玩家密码的循环单链表的方法从主函数中获取玩家信息n 如果n>0 是否退出创建循环单链表,储存各个玩家密码创建链表完成返回主函数main() 图创建链表函数的数据流程图 2.6 沈阳航空航天大学课程设计报告Main()函jose();出队函数出队处理的方法从循环链表中按初始密码依次扫描,找出对应的玩家序列输出其持有的密码i=ppHead->pwd; j=ppHead->num; 移动浮标指针m_pwd=ppHead->pwd; 输出密码后,删除相应的结点,并释放所占的储存空间free(ppHead); ppHead=p->next; 图出队函数的数据流程图 3. void instruction() {printf(\\\n\ printf(\约瑟夫环:\\n\ printf(\ 编号为1,2,3,4?,n的n个人按顺时针方向围坐一圈,每人持有一个密\\n\ 执行完后返回主函数7 沈阳航空航天大学课程设计报告printf(\码(正整数).一开始任选一个正整数作为报数的上限值m,从第一个人开始\\n\ printf(\按顺时针方向自1开始顺序报数,报到时停止.报m的人出列,将他的密码\\n\ printf(\作为新的m值,从他在顺时针方向上的下一人开始重新从1报数,如此下去,\\n\ printf(\直到所有人全部出列为止.编程打印出列顺序.\\n\ printf(\ return 0; } 4菜单模块void menu(){ printf(\约瑟夫环*****************************\\n\ printf(\\\n\ printf(\[1]约瑟夫环问题的阐述\\n\ printf(\[2]按要求求解约瑟夫环\\n\ printf(\ [0]退出\\n\ printf(\欢迎使用!****************************\\n\} 8沈阳航空航天大学课程设计报告 5. 9 沈阳航空航天大学课程设计报告Main()开Menu()功能菜单选择要执行的操作功能1:约瑟夫环说明功能2:按要求求解约瑟夫环输入总人数n 输入开始上线数:功能3:退出系统输入每个玩家的密码调用:createList(&ppHead,n); jose(ppHead,m);函数求解所需的密码序列图主函数数据流程图程序运行完,自动返回到功能菜单 3 调试与分析调试过程在调试程序是主要遇到一下几类问题:这是一个使用循环链表的经典问题。
Removed_数据结构约瑟夫环课程设计报告书

:50 45. 44. 43. by 42.41.— 4—0.— 3—9.—3—8.by37@.—— 36.35. —34—. ——33.312. 1.2.3.34.0.5.6—.—29.by28.by@27.26.—— 25. 24. 23. 22. by 21.20. — 1—9.by:18.by:17.— 1—6.— 1—5.—1—4.—— 13. 12. 111.0“. ”by: 9M.“OOOKN”b8y.:——7.——6.——5.——4.——3.——2.——1.——
s=(LNode *)malloc(sizeof(LNode)); if (L==0) p=s; if (n==start) t=s; s->data=n; s->next=L; L=s; n--; } p->next=L; return t; } LNode* GetNode(LNode *p)/*出队函数*/ { LNode *q; for (q=p;q->next!=p;q=q->next); q->next=p->next; free (p); return (q); }
其次,建立一个不带头结点的循环链表并由头指针 p 指示。
最后,设计约瑟夫环问题的算法。
1、工作指针 first,r,s,p,q 初始化
2、输入人数(n)和报数(m)
3、循环 n 次,用尾插法创建链表
int start=k-1; LNode *s,*p,*L=0,*t; if (start==0) start=n; while (n!=0) { s=(LNode *)malloc(sizeof(LNode)); if (L==0) p=s; if (n==start) t=s; s->data=n; s->next=L; L=s; n--; } p->next=L; return t; } LNode* GetNode(LNode *p)/*出队函数*/ { LNode *q; for (q=p;q->next!=p;q=q->next); q->next=p->next; free (p); return (q); }
数据结构约瑟夫环问题的课程设计

课程设计与内容要求约瑟夫环问题[问题描述]编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人持有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
[基本要求]利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号。
此题所用的循环链表中不需要“头结点”,请注意空表和非空表的界限。
[测试数据]m的初值为20,n=7 ,7个人的密码依次为3,1,7,2,4,7,4,首先m=则正确的输出是什么?[要求]:输入数据:首先输入待处理人员数及他们的密码,然后输入m的初值,建立单循环链表。
输出形式:建立一个输出函数,将正确的出列序列输出。
一问题描述与分析约瑟夫问题编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人持有一个密码(正整数)。
一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1开始顺序报数,报到m时停止报数。
报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
分析利用单循环链表解决本问题,先创建一个有n个的单循环链表,依次录入密码。
然后从第一个结点出发,连续略过 m-1个结点,将第m个结点从链表中删除,并将第m个结点的密码作为新的么值,接着从下个结点开始,循环此过程,直至链表为空。
二数据结构描述利用不带头结点的单循环链表来作为约瑟夫环的存储结构三主要算法流程描述1主要流程图2具体程序段及其说明#include<stdio.h>#include<malloc.h>typedef struct node{int number;int key;struct node* next;}listnode, * circularlist;//定义了结点类型listnode和指针类型circularlistint main(){int amount,t,code,m,k;// amount表示总人数,code表示相应的学生密码circularlist w=(listnode*)malloc(sizeof(listnode));w->next=w;//循环链表仅一个元素时依然满足listnode *v;printf("请输入总人数:");scanf("%d",&amount);v=w;for(k=1;k<=amount;k++){printf("请输入第%d 学生的密码: ",k);scanf("%d",&code);w->key=code;w->number=k;if(k!=amount){w->next=(listnode*)malloc(sizeof(listnode));w=w->next;}w->next=v;}//循环结束后自动生成链表头printf(“约瑟夫环已建成,可以开始!\n”);printf("请输入初值: ");scanf("%d",&m);if(m<=0){printf("输入错误,请重新输入\n");return(1);}m=m-1;//使w提前停下printf("出列顺序是:");//用w为起始点do{t=0;//加入m减1后为零的情况while(t!=m){w=w->next;t++;}v=w->next;w->next=v->next;printf(" %d",v->number);m=v->key;m=m-1;free(v);//释放v的存储空间}while(w->next!=w);printf(" %d\n",w->number);free(w); //释放w的存储空间getchar();getchar();return(0);}四使用说明1进入C工作环境:如Turbo C2.0, Turbo C++ 3.0,Microsoft visual C++ 6.0(本次课程设计使用环境)2输入自己所编好的程序,通过键盘或软键盘。
约瑟夫环上机实验报告

约瑟夫环上机实验报告1. 概述约瑟夫环问题是一个经典的数学问题,该问题是以约瑟夫·弗拉维奥(Josephus Flavius)命名的,故称为约瑟夫环。
问题的具体描述如下:在编号为1到n的n 个人围成一个圆圈,从第一个人开始报数,报到m的人出列,然后从出列的下一个开始重新从1到m报数,再次报到m的人再次出列,如此循环下去,直到所有的人都出列为止。
本次实验旨在使用程序实现约瑟夫环的模拟,并观察对于不同的参数n和m,最后剩余的人的编号特点。
2. 实验设计2.1 算法设计本实验中采用循环链表来模拟约瑟夫环,首先构建一个含有n个结点的循环链表,每个结点表示一个人,每个结点的数据域存储该人的编号。
然后根据报数规则,依次遍历链表,当报数为m时,删除对应的结点。
直到链表中仅剩一个结点为止。
2.2 程序实现pythonclass ListNode:def __init__(self, val=0):self.val = valself.next = Nonedef josephus(n, m):if n == 0:return -1构建循环链表dummy = ListNode(-1)cur = dummyfor i in range(1, n + 1):node = ListNode(i)cur.next = nodecur = cur.nextcur.next = dummy.next模拟游戏过程count = 0while cur.next != cur:count += 1if count == m:cur.next = cur.next.nextcount = 0else:cur = cur.nextreturn cur.val3. 实验结果为了观察不同参数n和m对最后剩余的人的编号的影响,我们进行了多组实验。
结果如下:n m 最后剩余的人的编号5 2 310 3 415 4 1420 5 6从实验结果可以看出,最后剩余的人的编号与参数m有关,而与参数n无关。
约瑟夫环实验报告

处理命令 }
}
(3)输出链表信息模块
static void PrntList(参数){
定义变量并初始化;
输出命令;
}
(4)删除结点也就是出队模块
static void StatGame(参数){
定义变量并初始化;
While{
开始报数;
输出结果;}}
4.各程序模块之间的层次(调用)关系。
本程序包含以下模块:
(2)创建单循环链表函数模块代码
static void CreatList(circularlist * ppHead, const int n)
{
int i,ikey;
Node *pNew, *pCur;
for(i=1;i<=n;i++)
{
printf("请输入第%d个人所持有的密码:",i);
scanf("%d", &ikey);
#define OK 1
typedef int Status;
typedef double ElemType;
单向循环链表中节点的定义如下所示:
typedef struct LNode
{
int number;
int data;
struct LNode *next;
}LNode, *LinkList;
2.1主
2.2创建单循环链表函数流程图
2.3删除结点函数(出队函数)程序流程图
2.4子
四.
1.调试过程中遇到的问题及解决方法及对设计与实现的回顾讨论和分析
程序的编写和调试基本正常。遇到的问题有:指针的指向的边界问题。当执行输入人数时,输入0程序出现了意想不到的错误,所以再重新设计时加入了对空节点的处理。在链表节点的设计上,最初是仅包含密码和指针,但是后来考虑到链表节点删除时会带来一系列的编号变化,编号难以确定,所以节点设计上又加了一个编号。在单向链表的赋值操作时,原本是以一个不变的L作为头结点,但是这种赋值方法带来了诸多变量设计的问题,所以将L为节点,赋值完成后,再让L指向头结点。程序原本是没有求节点个数的函数,但是在约瑟夫环的实现函数中,节点的个数时时影响着结果的判断,所以加入了该函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JIANGXI AGRICULTURAL UNIVERSITY
JAVA课程设计报告
题目
: Joseph环实验报告
学 院: 软件学院
* 名: ***
学 号: ********
专 业: 软件工程
班 级: 软件 1115
指导教师: 职 称: 讲师
二0一二 年 12 月
1.问题描述
任务:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每
个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限
值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止
报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向
的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。
设计一个程序来求出出列顺序。
2.需求分析
其中主要功能分为三项:
1、 要求使用单向循环链表模拟过程。
2、 输入报数上限值m和人数上限值n,密码值均设定为正整数。
3、 用户输入Joseph的必要数据,并显示出列顺序。
各个功能模块有:
1、主函数模块:初始化图形界面,实现软件功能。
2、单向循环链表创建模块:用循环链表表示joseph环。
3、输入子模块:对用户输入数据进行处理。
3.概要设计
定义结构体
typedef struct
{
Int number; //编号
int cipher; // 密码
}DataType;
typedef struct node
{
DataType data;
struct node *next;
}SCLNode;
初始化:
SCLLInitiate(SCLNode **head)
插入节点:
SCLLInsert(SCLNode *head,int i,DataType x)
删除结点:
SCLLDelete(SCLNode *head,int i,DataType *x)
取结点:
SCLLGet(SCLNode *head,int i,DataType *x)
判断是否为空:
SCLLNotEmpty(SCLNode *head)
释放空间:
SCLLDeleteAfter(SCLNode *p)
实现Joseph环:
JesephRing(SCLNode *head,int m)
主函数:
main()
4.详细设计
#include
#include
#include
//数据类型datatype的结构体
typedef struct
{
int number; //编号
int cipher; // 密码
}DataType;
//采用带头结点的单循环链表,结构体
typedef struct node
{
DataType data;
struct node *next;
}SCLNode;
//初始化,创建空间
void SCLLInitiate(SCLNode **head)
{
if((*head = (SCLNode *)malloc(sizeof(SCLNode))) == NULL)exit(1); //如果
头结点的为空,结束
(* head) ->next = *head; //设
下一个为头结点~
}
//插入节点
int SCLLInsert(SCLNode *head,int i,DataType x)
{
SCLNode *p,*q;
int j;
p = head ->next;
j=1;
while(p!=head&&j
{
p = p->next; //保持插入的数的位置,即形成环状
j++;
}
if(j != i-1&&i!=1) //保持位置
{
printf("插入位置参数错!");
return 0;
}
if((q = (SCLNode *)malloc(sizeof(SCLNode))) == NULL)exit(1); //创建空间
q ->data = x; //赋值
q ->next = p ->next; //插入
p ->next = q;
return 1;
}
int SCLLDelete(SCLNode *head,int i,DataType *x) //删除元素
{
SCLNode *p,*q;
int j;
p = head;
j = 0;
while(p ->next!=head&&j
p = p->next;
j++;
}
if(j!=i-1)
{
printf("删除位置参数错!");
return 0;
}
q = p ->next;
p ->next = p ->next ->next; //取删除的下一个位置
*x = q ->data;
free(q);
return 1;
}
int SCLLGet(SCLNode *head,int i,DataType *x) //取元素
{
SCLNode *p;
int j;
p =head;
j = 0;
while(p ->next!=head&&j{
p = p ->next;
j++;
}
if(j!=i)
{
printf("取元素位置参数错!");
return 0;
}
*x = p ->data; //取元素
return 1;
}
int SCLLNotEmpty(SCLNode *head) //判断是否为空
{
if(head ->next == head) //头结点的下一个指向头结点
return 0;
else
return 1;
}
void SCLLDeleteAfter(SCLNode *p) //释放空间
{
SCLNode *q = p ->next;
p ->next = p ->next ->next; //循环进行找到下一个元素
free(q);
}
void JesephRing(SCLNode *head,int m)
{
SCLNode *pre,*curr;
int i;
pre = head;
curr = head ->next;
while(SCLLNotEmpty(head) == 1) // 当不为空
{
for(i = 1;i
pre = curr;
curr = curr ->next;
if(curr == head) //到了最后一个使其形成环状
{
pre = curr;
curr = curr ->next;
}
}
printf("%d ",curr ->data.number); //输出找到的元素是第几个
m = curr ->data.cipher; //取其密码为m
curr = curr ->next;
if(curr == head) curr = curr ->next;
SCLLDeleteAfter(pre);
}
}
int main()
{
DataType test[7] = {{1,3},{2,1},{3,7},{4,2},{5,4},{6,8},{7,4}};
int n = 7,m = 20,i;
SCLNode *head;
SCLLInitiate(&head); //初始化
for(i = 1;i<=n;i++) //插入元素
{
SCLLInsert(head,i,test[i-1]);
}
JesephRing(head,m);
}
5.课设总结
本次实验算是数据结构课的第一次课程设计,自己感觉还是收获
蛮多的。大体知道了一些流程步骤,对C语言的使用更加熟练,对
本学期所学的知识有一个更好的了解,更加全面地认识自己。
在这次实验中遇到过许多困难。一开始对单链表结构并不是很熟
悉,并且自己还是头一次单独完成这个相对而言比较大的编程,对问
题分析和整体构思还有很大不足。
通过查阅书籍、上网浏览我获得很大的启发。特别是同学们给了我
很大的帮助,我有很多问题是在同学的帮助下解决的。
通过这次小实验,对数据结构这门课程了解得更深刻。它需要你一
直地钻研,有时一个问题看起来很难,你一步一步去算,其实也就那
么回事。当你深入了解时,你会发现其实也十分有趣。我们可能还处
于初级阶段,我们还需努力学习,掌握更多知识。下学期继续努力。
谢谢老师!