鱼C论坛

 找回密码
 立即注册
查看: 2698|回复: 0

[技术交流] 第18讲课后题参考答案

[复制链接]
发表于 2014-11-11 11:30:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
按自己的思路写的,运行结果和小甲鱼的一样。
供参考:
#include <stdio.h>
#include <stdlib.h>


typedef struct node
{
    int id;
    int data;
    struct node *next;
}node;

node *create(int n)
{
    node *head = (node *)malloc(sizeof(struct node)), *p,*temp;

    p = head;

    int i;
    int password;

    if(n != 0)
    {
        for(i = 1; i <= n; i++)
        {
            temp = (node *)malloc(sizeof(struct node));
            temp->id = i;
            printf("请为第%d个人输入密码:", i);
            scanf("%d", &password);
            temp->data = password;
            p->next = temp;
            p = temp;
        }
        temp->next = head->next;
    }

    free(head);

    return p->next;
}

int main()
{
    node *p,*temp;

    int m, n, i, j = 1;
    printf("请输入人数:");
    scanf("%d", &n);
    p = create(n);
    printf("请输入报数上限:");
    scanf("%d", &m);

    //m %= n;

    while(p != p->next)
    {
        if(m == 1)
        {
            temp = p->next;
            do
            {
                temp = temp->next;
            }
            while(p != temp->next);
            p = temp;
        }
        else
        {
            for(i = 1; i < m -1; i++)
            {
                p = p->next;
            }
        }
        printf("第 %d个出列的人是:%d, 密码是:%d\n", j, p->next->id, p->next->data);
        temp = p->next;
        p->next = temp->next;

        m = temp->data;
        free(temp);
        p = p->next;
        j++;
    }

    printf("第 %d个出列的人是:%d, 密码是:%d\n", j, p->next->id, p->data);

    return 0;
}
最后欢迎讨论!


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表