标题:这哪儿错了,不走
只看楼主
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
结帖率:100%
 问题点数:0 回复次数:8 
这哪儿错了,不走
程序代码:
#include<stdio.h>
#define N 13
struct person
{
    int number;
    int nextp;
}link[N+1];

int main()
{
    int i, count, h;
    for (i = 1; i < N; i++)
    {
        if (i == N)
            link[i].nextp = 1;
        else
        {
            link[i].nextp = i + 1;
            link[i].number = i;
        }
    }
    printf("\n");
    h = N;
    count = 0;
    printf("sequence that person leave the circle:\n");
    while (count < N - 1)
    {
        i = 0;
        while (i != 3)
        {
            h = link[h].nextp;
            if (link[h].number)
                i++;
        }
        printf("%4d", link[h].number);
        link[h].number = 0;
        count++;
    }
    printf("\nthe last one is:\n");
    for (i = 1; i < N; i++)
        if (link[i].number)
            printf("%3d\n", link[i].number);
    return 0;
}
搜索更多相关主题的帖子: count number person 
2017-02-21 09:59
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
得分:0 
没人会吗
2017-02-21 11:40
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
我对链表不是很懂

但是你循环体里面的  if (link[h].number)
                i++;
这句代码肯定没有机会呗执行  所以该循环是一个死循环

DO IT YOURSELF !
2017-02-21 11:59
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
得分:0 
以下是引用wp231957在2017-2-21 11:59:26的发言:

我对链表不是很懂

但是你循环体里面的  if (link[h].number)
                i++;
这句代码肯定没有机会呗执行  所以该循环是一个死循环

说不定改一改就能执行了呢
2017-02-21 12:06
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
程序代码:
#include<stdio.h>
#define N 13
struct person
{
    int number;
    int nextp;
}link[N+1];

int main()
{
    int i, count, h;
    for (i = 1; i <= N; i++)             //i<=N
    {
        if (i == N)
            link[i].nextp = 1;
        else
        {
            link[i].nextp = i + 1;
            link[i].number = i;
        }
    }
    printf("\n");
    h = N;
    count = 0;
    printf("sequence that person leave the circle:\n");
    while (count < N - 1)
    {
        i = 0;
        while (i != 3)
        {
            h = link[h].nextp;
            if (link[h].number)
                i++;
        }
        printf("%4d", link[h].number);
       // link[h].number = 0;                    //去掉这一行
        count++;
    }
    printf("\nthe last one is:\n");
    for (i = 1; i < N; i++)
        if (link[i].number)
            printf("%3d\n", link[i].number);
    return 0;
}

早知做人那么辛苦!  当初不应该下凡
2017-02-21 12:25
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
得分:0 
以下是引用炎天在2017-2-21 12:25:37的发言:

#include<stdio.h>
#define N 13
struct person
{
    int number;
    int nextp;
}link[N+1];

int main()
{
    int i, count, h;
    for (i = 1; i <= N; i++)             //i<=N
    {
        if (i == N)
            link.nextp = 1;
        else
        {
            link.nextp = i + 1;
            link.number = i;
        }
    }
    printf("\n");
    h = N;
    count = 0;
    printf("sequence that person leave the circle:\n");
    while (count < N - 1)
    {
        i = 0;
        while (i != 3)
        {
            h = link[h].nextp;
            if (link[h].number)
                i++;
        }
        printf("%4d", link[h].number);
       // link[h].number = 0;                    //去掉这一行
        count++;
    }
    printf("\nthe last one is:\n");
    for (i = 1; i < N; i++)
        if (link.number)
            printf("%3d\n", link.number);
    return 0;
}

运行起来了
2017-02-21 12:35
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:0 
回复 6楼 see235959850
是的, 没有具体要求, 只能这样改改了

早知做人那么辛苦!  当初不应该下凡
2017-02-21 12:36
see235959850
Rank: 2
等 级:论坛游民
帖 子:380
专家分:29
注 册:2016-12-21
得分:0 
以下是引用炎天在2017-2-21 12:36:01的发言:

是的, 没有具体要求, 只能这样改改了

可就这样不懂装懂下去真的好吗
2017-02-21 15:28
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
就帮你改正常吧,如下:
程序代码:
#include<stdio.h>
#define N 13
struct person
{
    int number;
    int nextp;
}link[N+1];

int main()
{
    int i, count, h;
    for (i = 1; i <= N; i++)  //这里修改为<=
    {
        if (i == N)
            link[i].nextp = 1;
        else
            link[i].nextp = i + 1;
        link[i].number = i;  //这个赋值必须在if...else...外边
    }
    printf("\n");
    h = N;
    count = 0;
    printf("sequence that person leave the circle:\n");
    while (count < N - 1)
    {
        i = 0;
        while (i != 3)
        {
            h = link[h].nextp;
            if (link[h].number)
                i++;
        }
        printf("%4d", link[h].number);
        link[h].number = 0;
        count++;
    }
    printf("\nthe last one is:\n");
    for (i = 1; i <= N; i++)  //这里修改为<=
        if (link[i].number)
            printf("%3d\n", link[i].number);;
    return 0;
}


这可不是用链表,只不过是数组,而用数组是不需要定义结构体的,这叫“Fart pants off”

[此贴子已经被作者于2017-2-21 19:27编辑过]

2017-02-21 19:21



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




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

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