zoukankan      html  css  js  c++  java
  • c语言循环链表的问题

    今天,老师说了一道题,大意是,有一群小朋友10个人,但是老师只有一个苹果,只能给一个小朋友,于是老师就决定让小朋友们做成一圈,从第一个小朋友开始,每隔一个小朋友就没有机会得到苹果,最后剩下的一个人可以得到,现在老师想知道这个幸运儿会是谁.

    然后老师要求这个问题用循环链表解决,自己也顺带复习一下,直接上代码

    struct data
    {
        int num;
        struct data *next;
    };
    int main()
    {
        struct data *p,*head,*pnew;
        int n=2;
        p=head=(struct data*)malloc(sizeof(struct data));        //创建头指针,存如第一个数据
        p->num=1;
        while(n<=10)                            //循环创建接下来的链表
        {
            pnew=(struct data *)malloc(sizeof(struct data));
            pnew->num=n;
            p->next=pnew;
            p=pnew;
            n++;
        }
        p->next=head;                            //让最后的尾指针指向头指针,形成循环链表
        p=head;                                //p指向头指针,准备遍历链表
        while(1)
            {
                p->next=p->next->next;                //根据条件,两个人中间的一个没有机会获得糖果
                p=p->next;                    //到下个人的下个人
                if(p->next==p)                    //循环链表,当只剩下一个结点的时候,它会指向它本身
                    break;
            }
        printf("%d
    ",p->num);                        //输出这个结点的编号,看看是哪个幸运儿
    }

    直接看代码吧,加油!不管别人怎么看,只要坚持才是最好的自己.

  • 相关阅读:
    python的sorted相关
    dict两种遍历方法
    python 深拷贝和浅拷贝浅析
    牛人总结python中string模块各属性以及函数的用法,果断转了,好东西
    Python二分查找
    堆和栈区别
    一次完整的HTTP事务是怎样一个过程?(转)
    ------shell学习
    BZOJ1025 [SCOI2009]游戏
    BZOJ1024 [SCOI2009]生日快乐
  • 原文地址:https://www.cnblogs.com/kingos/p/4555805.html
Copyright © 2011-2022 走看看