bite解法

环形链表的约瑟夫问题

https://www.nowcoder.com/practice/41c399fdb6004b31a6cbb047c641ed8a

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 
 * @param m int整型 
 * @return int整型
 */
 typedef struct ListNode ListNode;
 ListNode* BuyNode(int n)
 {
	 ListNode* newnode = (ListNode*)malloc(sizeof(ListNode));
	 if (newnode == NULL)
	 {
		 exit(1);
	 }
	 newnode->val = n;
	 newnode->next = NULL;
     return newnode;
 }

 ListNode* CreatCircle(int n)
 {
	 ListNode* newHead, * newTail;
	 newHead = newTail = BuyNode(1);
	 for (int i = 2; i <= n; i++)
	 {
		 newTail->next = BuyNode(i);
		 newTail = newTail->next;
	 }
	 	newTail->next = newHead;
	 return newTail;
 }

 int ysf(int n, int m) {
	ListNode* prev, * pcur;
	prev = CreatCircle(n);
	pcur = prev->next;
	int count = 1;
	while (pcur->next != pcur)
	{
	
		if (count == m)
		{
			prev->next = pcur->next;
			free(pcur);
			pcur = prev->next;
			count = 1;
		}
		else {
				prev = pcur;
	pcur = pcur->next;
	count++;
		}
	}
	return pcur->val;
 }


全部评论

相关推荐

04-17 10:16
门头沟学院 Java
不河狸啊:为什么我的是已送达,连已读都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务