读书人

谁指点一下

发布时间: 2012-03-15 11:50:39 作者: rapoo

哪位高手指点一下
用静态链表来求解约瑟夫问题,谢谢啊!

[解决办法]

C/C++ code
void DelChain(int n,int m){    struct item    {        int data;        item *next;    };    item *head,*tail,*temp;    head=tail=NULL;    int count=0;    for(int i=0;i<n;i++)//初始化链表    {        item *temp=new item;        temp->data=i+1;        temp->next=NULL;        if(head==NULL) head=tail=temp;        else        {            tail->next=temp;            tail=temp;        }    }    tail->next=head;    temp=head;    while(count<n)//删除元素    {        int x;        count++;        if(m==1) //已指向第m个元素        {            x=head->data;            head=head->next;        }        else        {            for(int k=1;k<m-1;k++)   temp=temp->next;            head=temp->next;            temp->next=head->next; //从链表中删除该元素            temp=temp->next;//记录下次开始计数的初始位置            x=head->data;            delete head;        }        if(count<n)     cout<<x<<"  ";        else cout<<x;    }    cout<<endl;} 

读书人网 >软件架构设计

热点推荐