首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

约瑟夫环循环链表的兑现出现一个很奇葩的现象,求围观,求解释

2012-07-31 
约瑟夫环循环链表的实现出现一个很奇葩的现象,求围观,求解释代码如下,#include STDIO.H#include MALLOC

约瑟夫环循环链表的实现出现一个很奇葩的现象,求围观,求解释
代码如下,

#include <STDIO.H>
#include <MALLOC.H>
#include <iostream>
using namespace std;
typedef struct Node
{
int data;
struct Node *next;
}node;

void Josephus(int n, int k, int m)
{
node *head;
node *pre;
node *curr;
node *temp;

head = ( node *)malloc(sizeof(node)) ;
head->next = head;
head->data = 0;
curr = head;

for (int i=1; i<n; ++i)
{
temp = ( node *)malloc(sizeof(node)) ;
temp->data = i;
temp->next = curr->next;
curr->next = temp;
curr = temp;
}

curr = head;
while (k--)
{
pre = curr;
curr = curr->next;
}
while (n--)
{
for (int s=m-1; --s; pre=curr,curr=curr->next)
;
pre->next = curr->next;
cout<<curr->data<<endl;
delete curr;
curr = pre->next;
}
}
int main()
{
Josephus(5,4,1);
return 0;
}

看到这不知道您发现问题没,
问题时当我们进入Josephus函数时k的值会减一,然后再Josephus函数中每执行一行代码k的值还会减一
求解释。。。。


[解决办法]
Debug中不能有++i

热点排行