注册 登录
编程论坛 C++教室

缺的程序怎么填

贝壳中的沙子 发布于 2016-09-27 19:32, 1275 次点击
设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…如此反复直到所有人全部出列为止。对于给定的n,s和m,求出按出列次序得到的n个人员的序列(要求用链表加以实现)。
求各位大神帮忙!
#include<cstdlib>
#include<iostream>
using namespace std;

typedef struct Lnode
{
    int data;
    struct Lnode *next;
}Lnode,*Linklist;

void Creatlist_tail(Linklist &h,int n)
{
    Linklist r,s;
    int i;
    for(i=1;i<=n;i++)
    {
        s=new Lnode;
        s->data=i;
        if(i==1)
        r=h=s;
        else
        {
            r->next=s;
            r=s;
        
        }
    }
    r->next=h;
}//尾插法创建不带头结点的循环单链表

void printlist(Linklist h)
{
   
    cout<<p->data<<endl;
    free(p);
}

int main()
{int n,s,m;
Linklist h;
cout<<"请输入人数:";
cin>>n;
cout<<"第几个人报数:";
cin>>s;
cout<<"第几个人出列:";
cin>>m;
Creatlist_tail(h,n);
printlist(h);
josephus(h,n,s,m);
reture 0;
1 回复
#2
书生牛犊2016-09-27 21:45
援引  https://bbs.bccn.net/viewthread.php?tid=41519&extra=page%3D1%26amp%3Bfilter%3Ddigest

谈谈这段代码,你看懂多少?如果完全看不懂没头绪,那我无能为力。

别人可以帮你不上printflist()函数缺失的部分。  但那又怎样?帮得了你一时,帮不了一世。

题目已经把思路讲的很清楚了。如果你看得懂代码,掌握了“链表的插入与删除”,你就不会有此问了。


1