魔术师发牌问题

#include<stdio.h>
#include<stdlib.h>
#define CardNum 13

typedef struct Node
{
    int data;
    struct Node *next;
}Node;

void CreateList(Node **list ,int n = CardNum)
{
    Node *head = (Node*)malloc(sizeof(Node));
    head->next = NULL;
    Node* p =head;
    Node* s ;
    while( n--)
    {
        s = (Node*)malloc(sizeof(Node));
        s->data = n;
        p->next = s;
        p = s;
    }
//    s->next=NULL; //线性链表时,这点不设在print中引发异常
    s->next = head->next;
    *list = head->next;
    free(head);
}

void print(Node* list)
{
    Node* p =list;
    do
    { 
        printf("%d  ",p->data);
        p=p->next;
    }while(p != list);
    printf("
");
}

void main()
{
    Node* list;
    CreateList(&list);
    print(list);
}
原文地址:https://www.cnblogs.com/yaoxc/p/3175458.html