单链表选首领问题
#include <stdio.h>
#include <stdlib.h>
struct node
{
    int code;
    struct node *next;
}NODE,*LinkList;
LinkList create_list(int n)
{
    LinkList head,p;
    int i;
    head=(node*)malloc(sizeof(node));
    head->code=1;head->next=head;
    for(i=n;i>1;--i)
    {
        p=(node*)malloc(sizeof(node));
        p->code=i;p->next=head->next;head->next=p;
    }
    return head;
}
void output(LinkList head)
{
    LinkList p;
    p=head;
    do{
        printf("%4d",p->code);p=p->next;
    }while(p!=head);
    printf("\n");
}
void play(LinkList head,int n)
{
    LinkList p,q;
    int c=1,k;
    p=head;k=n;
    while(k>1)
    {
        if(c==2)
        {
            q=p->next;p->next=q->next;printf("%4d is out!",q->code);free(q);c=0;k--;
        }
        else
        {
            c++;p=p->next;
        }
    }
printf("\n%4d was the winner.",p->code);     
}
void main()
{
    LinkList head;
    int n;
    printf("input the number of players:");scanf("%d",&n);
    head=create_list(n);
    if(head)
    {
        output(head);
        play(head,n);
    }
}