欢迎来到天天文库
浏览记录
ID:39497421
大小:91.00 KB
页数:4页
时间:2019-07-04
《数据结构猴子选大王》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、猴子选大王1.题目要求:任务:一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。要求:输入数据:输入m,nm,n为整数,n2、m"#include"stdlib.h"usingnamespacestd;typedefstructnode{intdata;structnode*next;//定义结点指针}ListNode;typedefListNode*Linklist;//自定义链表类型ListNode*q,*p;Linklisthead=(Linklist)malloc(sizeof(ListNode));//申请头结点/*******按将猴子数量编号并存入链表*******/LinklistCreate(intn){inti;p=head;p->next=NULL;for(i=3、1;i<=n;i++){//将猴子顺序编号q=(ListNode*)malloc(sizeof(ListNode));q->data=i;p->next=q;p=q;p->next=NULL;}returnhead;//返回链表头指针}/****************打印链表***************/voidprintlist(Linklisthead){p=head->next;while(p){//打印链表直至链表结尾cout<data<<"";p=p->next;}}/**************删除被选到的猴子************4、*****/voidDelete(ListNode*b,ListNode*pb)/*pb为删除结点的前驱*/{pb->next=b->next;free(b);}/**************猴子选大王(数n个)**************/intKing(Linklisthead,intn,inti){intj,k;ListNode*pp,*t;/*删除节点前驱*/p=head;if(i==1)returni;while(i!=1){for(j=0;jnext;if(!p)p=head->next;}i5、f(!p->next)t=head;//当删除的结点为最后一个结点时,t指向头结点elset=pp;Delete(p,pp);p=t;i--;}k=pp->data;//将最后一只猴子的编号赋值给kreturnk;//返回最后一只猴子编号}voidmain(){inti,c,k,flag=0;cout<<"请输入猴子数量"<>i;cout<<"--------------将猴子顺序编号--------------"<6、---------编号结束-----------------"<>c;if(c>i)cout<<"输入数量大于猴子数量,请重新输入"<7、8、c==i)flag=1;}k=King(head,c,i);//调用猴子先大王函数cout<<"大王编号为"<
2、m"#include"stdlib.h"usingnamespacestd;typedefstructnode{intdata;structnode*next;//定义结点指针}ListNode;typedefListNode*Linklist;//自定义链表类型ListNode*q,*p;Linklisthead=(Linklist)malloc(sizeof(ListNode));//申请头结点/*******按将猴子数量编号并存入链表*******/LinklistCreate(intn){inti;p=head;p->next=NULL;for(i=
3、1;i<=n;i++){//将猴子顺序编号q=(ListNode*)malloc(sizeof(ListNode));q->data=i;p->next=q;p=q;p->next=NULL;}returnhead;//返回链表头指针}/****************打印链表***************/voidprintlist(Linklisthead){p=head->next;while(p){//打印链表直至链表结尾cout<data<<"";p=p->next;}}/**************删除被选到的猴子************
4、*****/voidDelete(ListNode*b,ListNode*pb)/*pb为删除结点的前驱*/{pb->next=b->next;free(b);}/**************猴子选大王(数n个)**************/intKing(Linklisthead,intn,inti){intj,k;ListNode*pp,*t;/*删除节点前驱*/p=head;if(i==1)returni;while(i!=1){for(j=0;jnext;if(!p)p=head->next;}i
5、f(!p->next)t=head;//当删除的结点为最后一个结点时,t指向头结点elset=pp;Delete(p,pp);p=t;i--;}k=pp->data;//将最后一只猴子的编号赋值给kreturnk;//返回最后一只猴子编号}voidmain(){inti,c,k,flag=0;cout<<"请输入猴子数量"<>i;cout<<"--------------将猴子顺序编号--------------"<6、---------编号结束-----------------"<>c;if(c>i)cout<<"输入数量大于猴子数量,请重新输入"<7、8、c==i)flag=1;}k=King(head,c,i);//调用猴子先大王函数cout<<"大王编号为"<
6、---------编号结束-----------------"<>c;if(c>i)cout<<"输入数量大于猴子数量,请重新输入"<7、8、c==i)flag=1;}k=King(head,c,i);//调用猴子先大王函数cout<<"大王编号为"<
7、
8、c==i)flag=1;}k=King(head,c,i);//调用猴子先大王函数cout<<"大王编号为"<
此文档下载收益归作者所有