(完整版)数据结构经典题目及c语言代码

(完整版)数据结构经典题目及c语言代码


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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信