单链表实现约瑟夫环

来源:互联网 发布:最新电影免费观看软件 编辑:程序博客网 时间:2024/05/21 19:33
//单链表实现约瑟夫环
Node* Josephus(Node* hus, size_t k)
{
Node* man, *next;
assert(hus);
man = hus;
while (man->next != man)
{
int count = k;
while (--count)
{
man = man->next;
}
next = man->next;
man->data = next->data;
man->next = next->next;
free(next);
}
return man;
}
void TestTopic1()
{
//Node* pos = NULL;
Node* list = NULL;
Node* tail;
PushBack(&list, 1);
PushBack(&list, 2);
PushBack(&list, 3);
PushBack(&list, 4); 
tail = Find(list, 4);
tail->next = list;
printf("live:%d",Josephus(list, 3)->data);
//PrintList(list);


//pos = Find(list, 3);
//InsertFront(pos, 30);
//EraseNonTail(pos);
//PrintTailToHead(list);
//PrintList(list);
}
输出结果:
live:1