以循环链表解决狐狸逮兔子问题
#include<stdio.h>
#include<stdlib.h>

typedef int Elemtype;
typedef struct LNode
{
    Elemtype data;
    struct LNode *next;
}LNode,*LinkList;

void createlist(LinkList *head)
{
    int i;
    *head=(LinkList)malloc(sizeof(LNode));
    LinkList p,q;
    p=(*head)->next;
    for(i=0;i<10;i++)
    {
        q=(LinkList)malloc(sizeof(LNode));
        p->next=q;
        q->next=(*head);
    }
    q->next=(*head);

}
void initlist(LinkList head)
{
    LinkList p;
    p=head->next;
    do{
        p->data=1;
        p=p->next;
    }while(p->next!=head);
}
void overthroughlist(LinkList head)
{
    LinkList p;
    int i,j=1,q,n,u;
    p=head->next;
    //狐狸来了
    scanf("%d",&n);//进洞次数
    for(i=0;i<n;i++)
    {
            u=((1.0/2)*j*(j+1));
            u=u%10;
            for(q=1;q<u;q++)//确保十个洞循环进,j是相隔的山洞数
            {
                p=p->next;
            }
            p->data=0;
            j++;
            if(p->next==head)
            {
                p=p->next;
            }
    }
}
void outputlist(LinkList head)
{
    LinkList p;
    p=head->next;
   do{
    printf("%d",p->data);
   }while(p->next!=head);
}
int main()
{
    LinkList head;
    createlist(&head);
    initlist(head);
    overthroughlist(head);
    outputlist(head);
    return 0;
}

通过了编译但是没有输出,不清楚错哪了,求大神指教orz

循环链表的创建是参考的这位大神的代码
https://blog.csdn.net/you__know/article/details/8177628

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!