| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 792 人关注过本帖
标题:约瑟夫环
取消只看楼主 加入收藏
C78486080
Rank: 2
等 级:论坛游民
帖 子:18
专家分:18
注 册:2009-12-21
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:1 
约瑟夫环
本人编了一个简单的程序,程序目的:25个人围成一圈,从第一个人开始报数,数到3或者3的倍数着出列,求最后出列的序号。但是没有运行处结果。
程序如下:
#include <stdio.h>
#include <malloc.h>
struct tm
{
    int num;
    struct tm *next;
}*p,*q,*head;

void main()
{
    int i;
    head=NULL;
     //建立循环链表
    for(i=0;i<25;i++)
    {
        p=(struct tm *)malloc(sizeof(struct tm));
        p->num=i;
        if(head==NULL)
            head=p;
        else
            q->next=p;
        q=p;
    }
    p->next=head;
    q=head;
    依次删除应该出栈的元素
    while(p->next!=p)
    {
        for(i=0;i<2;i++)
        {
            p=q;
            p=p->next;
        }
        q->next=p->next;
        printf("%4d",p->num);
        free(p);
        p=q->next;
    }
    printf("The last number is %d",p->num);
}
希望各位楼主指点一下,帮我找出其中的错误,谢谢.
搜索更多相关主题的帖子: 约瑟夫 
2009-12-21 21:55
C78486080
Rank: 2
等 级:论坛游民
帖 子:18
专家分:18
注 册:2009-12-21
收藏
得分:0 
谢谢各位楼主。
2009-12-23 20:12
快速回复:约瑟夫环
数据加载中...
 
   



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

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