标题:刚刚学编程的小菜鸟 请教大大们一个约瑟夫环程序 不太会
只看楼主
cxazhr
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-11
结帖率:0
已结贴  问题点数:20 回复次数:12 
刚刚学编程的小菜鸟 请教大大们一个约瑟夫环程序 不太会
1、问题描述:约瑟夫(joseph)问题的一种描述是:编号为1、2、…、n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m。从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列。将他的密码作为新的m的值,从他在顺时针方向上方的下一个人开始重新报数,如此下去,直至所有人全部出列为止。式设计一个程序求出出列顺序。
#include <stdio.h>
#include <stdlib.h>

typedef struct Lnode{
    int data;
    int num;
    struct Lnode *next;
}*linklist;

void initlist(linklist &L,int a[],int n)
{
    linklist s,r;int i;
    L=(linklist)malloc(sizeof(linklist));
    L->next=NULL;
    r=L;
    for(i=0;i<n;i++)
    {
    s=(linklist)malloc(sizeof(linklist));
    s->data=a[i];
    s->num=i+1;
    r->next=s;
    r=s;
    }
r->next=L;
}

int delete_and_get(linklist L,int x,int &e)
{
    int i=0;int j;
    linklist p=L->next,q;
    while(p->next!=NULL && i<x-1)
    {
        p=p->next;
        i++;
    }
    if(!(p->next)||i>x-1)
    return -1;
    q=p->next;
    p->next=q->next;
    e=q->data;j=q->num;
    free(q);
    printf("被读出来的人是%d",j);
    return e;     
}

 int main()
{
     int i,m,n;int a[100];
     linklist L;
     printf("请输入人数和每个人的密码");
     scanf("%d %d/n",&m,&n);
     for(i=0;i<n;i++)
         {
         scanf("%d ",&a[i]);
         }     
  delete_and_get(initlist(*L, a, n),m);
  return 0;
}
能不能帮帮忙 快哭了—----
搜索更多相关主题的帖子: 顺时针 约瑟夫 include 
2012-10-11 22:48
cxazhr
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-11
得分:0 
别沉了
2012-10-11 22:50
cxazhr
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-11
得分:0 
求帮忙
2012-10-11 22:50
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:10 
什么问题有?
2012-10-11 22:56
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
回复 4楼 寒风中的细雨
问题最好是描述下  这样你也可以进一步的分析  也可以节省点别人的时间
2012-10-11 22:57
cxazhr
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-11
得分:0 
回复 5楼 寒风中的细雨
问题一 对于数据结构中这些指针的问题 什么LNODE *p ,linklist p,linklist *p,还有**p什么的 搞不懂 书上也没有 网上也搜不到具体的说明
这个程序C FREE 编译的错误是
[Error] C:\Users\a\Documents\C-Free\Temp\未命名25.cpp:56: error: invalid initialization of reference of type 'Lnode*&' from expression of type 'Lnode'[Error] C:\Users\a\Documents\C-Free\Temp\未命名25.cpp:11: error: in passing argument 1 of `void initlist(Lnode*&, int*, int)' 我自己也有点糊涂 不知道到底对不对 希望高人帮忙改改 能给编译过了
2012-10-11 23:21
cxazhr
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-11
得分:0 
谢谢了
2012-10-11 23:23
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
引用‘&’  是c++的

首先你确定下 源文件的类型 .c  or .cpp格式的  确保是.cpp的
2012-10-11 23:33
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
得分:0 
基本的语法 只有自己看书  多练了   
2012-10-11 23:34
cxazhr
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-10-11
得分:0 
回复 8楼 寒风中的细雨
是CPP的 大大先睡吧 有点晚了 身体要紧~~
2012-10-11 23:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-382981-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.224304 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved