数据结构—线性表(约瑟夫环)

约瑟夫环问题


typedef struct Node
{ 
struct Node *next; 
int content;
}Node,*NodePtr;
typedef NodePtr XHList;
typedef NodePtr position;



创建循环链表(尾指针指向头指针的下一节点,头指针不参与循环)


void create(XHList *L)
{
    (*L) = (NodePtr)malloc(sizeof(Node));
    (*L)->next = NULL;

    position tail = (*L);

    int i=1;
    for(;i<42;i++)
    {
        position midd =  (NodePtr)malloc(sizeof(Node));
        midd->content = i;
        midd->next = NULL;
        tail->next = midd;
        tail = midd;
    }
    tail->next = (*L)->next;
}


执行函数


void YSF(XHList *L)
{
    position curr = (*L);

    position midd = NULL;
    while(curr->next!=curr)
    {
        curr = curr->next->next;
        printf("%d\n",curr->next->content);
        midd = curr->next;
        curr->next = curr->next->next;
        midd->next = NULL;
        free(midd);
    }
    printf("%d\n",curr->content);
}


猜你喜欢

转载自blog.csdn.net/emiedon/article/details/52187677