2024年4月30日发(作者:)
(完整版)数据结构经典题目及c语言代码
《数据结构》课程设计题目
(程序实现采用C语言)
题目1:猴子选王(学时:3)
一堆猴子都有编号,编号是1,2,3 .。.m,这群猴子(m个)按照1-m的顺序围坐一圈,从
第1开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴
子,则该猴子为大王.
要求:m及n要求从键盘输入,存储方式采用向量及链表两种方式实现该问题求解.
//链表
#include 〈stdio.h〉
#include 〈stdlib.h>
// 链表节点
typedef struct _RingNode
{
int pos;
struct _RingNode *next;
}RingNode, *RingNodePtr;
// 创建约瑟夫环,pHead:链表头指针,count:链表元素个数
void CreateRing(RingNodePtr pHead, int count)
{
RingNodePtr pCurr = NULL, pPrev = NULL;
int i = 1;
pPrev = pHead;
while(——count 〉 0)
{
pCurr = (RingNodePtr)malloc(sizeof(RingNode));
i++;
(完整版)数据结构经典题目及c语言代码
pCurr—〉pos = i;
pPrev-〉next = pCurr;
pPrev = pCurr;
}
pCurr-〉next = pHead; // 构成环状链表
}
void KickFromRing(RingNodePtr pHead, int n)
{
RingNodePtr pCurr, pPrev;
int i = 1; // 计数
pCurr = pPrev = pHead;
while(pCurr != NULL)
{
if (i == n)
{
// 踢出环
printf("n%d", pCurr->pos); // 显示出圈循序
pPrev—>next = pCurr->next;
free(pCurr);
pCurr = pPrev—>next;
i = 1;
}
pPrev = pCurr;
pCurr = pCurr—〉next;
if (pPrev == pCurr)
{
// 最后一个
printf("nKing is %d", pCurr—〉pos); // 显示出圈循序
free(pCurr);
break;
}
i++;
}
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714417852a2442531.html
评论列表(0条)