| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1552 人关注过本帖, 1 人收藏
标题:要疯了,帮忙看下!!!
只看楼主 加入收藏
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏(1)
 问题点数:0 回复次数:11 
要疯了,帮忙看下!!!
今天看了一下线性链表,做了一道题目,内容如下:
设有N个人围坐一圈,现从某个人开始报数,数到M的人出列,接着从出列的下一个人开始重新报数,数到M的人又出列,如此下去直到所有人都出列为止.试求出他们的出列次序.(假定N的值从1到N,即从1开始数)程序如下:

#include<stdio.h>
#include<malloc.h>
#define N 5
typedef struct node
{
    int x;
    struct node *next;
}list;
list *create(int n)
{
    list *head,*p,*r;
    int i;
    p=(list *)malloc(sizeof(list));
    head=p;
    p->next=NULL;
    r=p;
    for(i=0;i<n;i++)
       {
        p=(list *)malloc(sizeof(list));
        p->x=i+1;
        r->next=p;
        r=p;
       }
    head=r->next;
    return head;
}
list *del(list *head,int t)
{
    list *p,*r,*s;
    p=head;
    s=p;
    p=p->next;
    while(t!=p->x)
         {
        s=p;
        p=p->next;
         }
    r=p;
    s->next=p->next;
    p=s->next;
    free(r);
    return s;
}
void calcul(list *head,int m)
{
    int i,k=0;
    list *p,*r;
    head=p;
    while(head!=head->next)
         {
        for(i=0;i<m;i++)
           {
            p=p->next;
            if(p!=head)
                k++;
            else
                i--;
            if(k==m)
                {
                    printf("%3d",p->x);
                    k=0;
                    r=del(head,p->x);
                    p=r;
                    break;
                }
           }
        }
}
void main()
{
    list *head;
    int M=2;
    head=create(N);
    calcul(head,M);
}
运行的结果是无限循环,看了大半天也找不出毛病,求各位帮帮忙,小弟在此深表感谢!
搜索更多相关主题的帖子: include create 
2008-03-02 19:56
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你自己找找啊,写过好多次了...关于学生管理系统里面都有这类方法....

学习需要安静。。海盗要重新来过。。
2008-03-02 20:49
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 

学习需要安静。。海盗要重新来过。。
2008-03-02 21:09
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
我知道网上一些地方有啊,但是我们要学着自己写啊.自己写的东西印象才会比较深刻啊,找了半天也找不出哪里错了,因为可以运行的,汗死啦!!!
2008-03-02 21:16
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
单步调试吧.可以提高自己,或者你再等等,有人会帮你解释了....

学习需要安静。。海盗要重新来过。。
2008-03-02 21:20
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
等待高人指点一下,我是新手来的!
2008-03-02 22:07
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
用线性表的话很简单的

—>〉Sun〈<—
2008-03-02 23:06
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
可以用数组

数组是线性的

—>〉Sun〈<—
2008-03-02 23:15
晨曦的朝阳
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-1-24
收藏
得分:0 
刚才又花了一个多小时,一个一个地方找错,终于把问题解决了,多谢各位来捧场啊.
上面的程序是我用带头结点的循环线性链表做的,第一次试做的,还好找出出错原因啦,都费了好几个小时啦.
2008-03-02 23:16
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
发下新的代码吧。

—>〉Sun〈<—
2008-03-02 23:28
快速回复:要疯了,帮忙看下!!!
数据加载中...
 
   



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

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