凯立德笔试题求助

huolianglee 2010-10-26 09:36:48
n个人,从1数到3,每次数到3减去此人,重新开始数到3再退出。问最后一个人几号?
要求用程序实现它,只记得是用链表实现的具体不记得了。
...全文
113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
恨天低 2010-10-26
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
#define LEN sizeof(struct A)
int main()
{
typedef struct A
{
int num;
struct A * next;
}DATA;

DATA *head, *p1, *p2, *p0;
int i, n;

cin>>n;
for ( i = 1; i <= n; i++)
{
if ( 1 == i)
{
p1 = p2 = (DATA*)malloc(LEN);
head = p1;
head->num = i;
head->next = NULL;
}
else
{
p2 = (DATA *)malloc(LEN);
p1->next = p2;
p2->num = i;
p1 = p2;
}
}

p2->next = head;
p0 = p2;
p1 = head;
p2 = p1->next;

int k = 1;
int num = n;

while (num != 1)
{
p0 = p0->next;
p1 = p1->next;
p2 = p2->next;
k++;

if (3 == k)
{
p0->next = p2;
free(p1);
p1 = p2;
p2 = p2->next;
k = 1;
num--;
}
}

cout<<p1->num;
return 0;
}
小楫轻舟 2010-10-26
  • 打赏
  • 举报
回复
google约瑟夫环
其实就是很基本的循环链表删除节点,
直到最后一个
恨天低 2010-10-26
  • 打赏
  • 举报
回复
耶瑟夫环?
luciferisnotsatan 2010-10-26
  • 打赏
  • 举报
回复
做个环形链表不就行了

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧