您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 数据结构课程设计报告-敢死队的问题(源代码)
敢死队问题源代码程序一:typedefstructnode{intdata;structnode*next;}LNode;/*定义结点类型*/LNode*CREAT(intn)/*创建循环链表*/{LNode*s,*q,*t;inti;if(n!=0){t=q=(LNode*)malloc(sizeof(LNode));q-data=1;/*生成第一个结点并使其data值为1*/for(i=2;i=n;i++){s=(LNode*)malloc(sizeof(LNode));/*自动生成结点*/q-next=s;q-next-data=i;/*给第i个结点赋值i*/q=q-next;}q-next=t;}/*生成后续结点,并使其data值即为它所在链表(队伍)中的位置*/returnt;}DELETE(LNode*t,intm)/*链表的删除*/{LNode*a;inti;while(t-next!=t){for(i=1;im-1;i++)/*查找要删除结点的前一结点*/t=t-next;a=t-next;t-next=a-next;free(a);/*释放结点*/t=t-next;}/*while循环依次删除被点到的士兵*/printf(\n);return(t-data);}main(){LNode*p;intm,n,z,y;printf(Exitpleaseinput'0'OrGoon...\nPleaseinputthetataloftheteam:);scanf(%d,&n);/*输入队员总数*/while(n!=0)/*当队员总数等于0时退出*/{do{printf(Pleaseinputtheexcursion:);/*输入偏移数*/scanf(%d,&m);}while(m=0);if(m==1)printf(Thewantedpositionis1th.\n);else{p=CREAT(n);y=DELETE(p,m);z=n-y+2;if(z%n==0)/*排除特殊情况*/printf(Thewantedpositionis%dth:\n,z);elseprintf(Thewantedpositionis%dth:\n,(n-y+2)%n);}/*通过数学思想求得实验要求情况下的数值*/printf(Exitpleaseinput'0'OrGoon...\nPleaseinputthetataloftheteam:);scanf(%d,&n);/*输入敢死队员总数*/}}程序二:#defineLIST_INIT_SIZE100#defineLISTINCCREMENT10typedefintElemType;typedefstructKList/*定义数据结构体类型*/{ElemType*elem;/*存储空间基址*/intlength;/*当前长度*/intlistsize;/*当前分配的存储容量(以sizeof(ElemType)为单位)*/}SqList;SqListInitList_Sq()/*创建线性表函数*/{SqListL;L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));/**/if(!L.elem)printf(Failinnewcreatlist),exit(0);/*存储分配失败*/else{L.length=0;/*空表长度为0*/L.listsize=LIST_INIT_SIZE;/*初始存储容量*/}}SqListListInsert_Sq(SqListL)/*线性表再分配函数*/{/*SqListL;*/int*newbase;newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCCREMENT)*sizeof(ElemType));/*为顺序表增加一个大小为存储LISTINCCREMENT个数据元素的空间*/if(!newbase)printf(Failinnewaddlist),exit(0);/*存储分配失败*/else{L.elem=newbase;/*新基址*/L.listsize+=LISTINCCREMENT;/*增加存储容量*/}}main(){SqListL;ints,i,m,count=0;/*声明变量*/L=InitList_Sq();printf(Pleaseinputthetataloftheteam:);scanf(%d,&m);/*输入敢死队员总数*/while(m!=0)/*当输入为0时退出程序*/{while(mL.length)/*当顺序表当前分配的存储空间大小不足时进行再分配*/L=ListInsert_Sq(L);for(i=0;im;i++)L.elem[i]=i+1;/*为队员赋值*/s=m;i=0;while(s1)/*当所剩敢死队员总数为1时,总循环结束*/{for(i=0;im;i++)if(L.elem[i]!=0){count++;if(count==5)/*报数循环*/{L.elem[i]=0;/*表示队员出列*/count=0;/*计数器清零*/s--;/*敢死队员数-1*/}}}for(i=0;im;i++)/*输出*/if(L.elem[i]!=0)if((m-L.elem[i]+2)%m==0)/**/printf(\nThewantedorderis%dth\n,m);elseprintf(\nThewantedorderis%dth\n,(m-L.elem[i]+2)%m);printf(Exitpleaseinput'0'OrGoon...\nPleaseinputthetataloftheteam:\n);scanf(%d,&m);/*输入敢死队员总数*/}}
本文标题:数据结构课程设计报告-敢死队的问题(源代码)
链接地址:https://www.777doc.com/doc-6150125 .html