数据结构经典题目及c语言代码.

数据结构经典题目及c语言代码.

ID:12604940

大小:212.00 KB

页数:101页

时间:2018-07-18

数据结构经典题目及c语言代码._第1页
数据结构经典题目及c语言代码._第2页
数据结构经典题目及c语言代码._第3页
数据结构经典题目及c语言代码._第4页
数据结构经典题目及c语言代码._第5页
资源描述:

《数据结构经典题目及c语言代码.》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《数据结构》课程设计题目(程序实现采用C语言)题目1:猴子选王(学时:3)一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。要求:m及n要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解。//链表#include#include//链表节点typedefstruct_RingNode{intpos;struct_RingNode*next;

2、}RingNode,*RingNodePtr;//创建约瑟夫环,pHead:链表头指针,count:链表元素个数voidCreateRing(RingNodePtrpHead,intcount){RingNodePtrpCurr=NULL,pPrev=NULL;inti=1;pPrev=pHead;while(--count>0){pCurr=(RingNodePtr)malloc(sizeof(RingNode));i++;pCurr->pos=i;pPrev->next=pCurr;pPrev=pCurr;}pCurr->

3、next=pHead;//构成环状链表}voidKickFromRing(RingNodePtrpHead,intn){RingNodePtrpCurr,pPrev;inti=1;//计数pCurr=pPrev=pHead;while(pCurr!=NULL){if(i==n){//踢出环printf("%d",pCurr->pos);//显示出圈循序pPrev->next=pCurr->next;free(pCurr);pCurr=pPrev->next;i=1;}pPrev=pCurr;pCurr=pCurr->nex

4、t;if(pPrev==pCurr){//最后一个printf("Kingis%d",pCurr->pos);//显示出圈循序free(pCurr);break;}i++;}}intmain(){intn=0,m=0;RingNodePtrpHead=NULL;printf("M(personcount)=");scanf("%d",&m);printf("N(outnumber)=");scanf("%d",&n);if(m<=0

5、

6、n<=0){printf("InputError");return0;}//建立链表

7、pHead=(RingNodePtr)malloc(sizeof(RingNode));pHead->pos=1;pHead->next=NULL;CreateRing(pHead,m);//开始出圈printf("KickOrder:");KickFromRing(pHead,n);printf("");system("pause");return0;}//数组做:#include#include#includevoidSelectKing(intMonkey

8、Num,intCallNum);voidmain(){intMonkeyNum;intCallNum;/*输入猴子的个数*/printf("MonkeyNum=");scanf("%d",&MonkeyNum);/*输入M的值*/printf("CallNum=");scanf("%d",&CallNum);SelectKing(MonkeyNum,CallNum);}voidSelectKing(intMonkeyNum,intCallNum){int*Monkeys;//申请一个数组,表示所有的猴子;intcounter=

9、0;//计数,当计数为猴子个数时表示选到最后一个猴子了;intposition=0;//位置,数组的下标,轮流遍历数组进行报数;inttoken=0;//令牌,将报数时数到M的猴子砍掉;//申请猴子个数大小的数组,把桌子摆上。Monkeys=(int*)malloc(sizeof(int)*MonkeyNum);if(NULL==Monkeys){printf("Somanymonkeys,systemerror.");return;}//将数组的所有内容初始化为0,被砍掉的猴子设置为1memset(Monkeys,0,s

10、izeof(int)*MonkeyNum);//循环,直到选中大王while(counter!=MonkeyNum){//如果这个位置的猴子之前没有砍掉,那么报数有效if(Monkeys[position]==0){token++;//成功报数一个,令牌+1,继续报数直到等于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。