|  | 
 
| 
刚学数据结构与算法,在魔术师发牌问题遇到一个问题,编译没有错,但是运行程序时报错,请各位帮我看一下问题所在,不胜感激,
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
复制代码#include <stdlib.h>
#include <stdio.h>
#define CardNumber 13
typedef struct Node{
        
        int data;
        struct Node *next;                // 这里少了分号;
} sqlList,*LinkList;
LinkList CreateList(){
        
        int i;
    LinkList head=NULL;
    LinkList p,q;
    p=head;
  
    for(i=1;i<=CardNumber;i++)
        {
                q=(LinkList)malloc(sizeof(sqlList));
                q->data=0;
        /*        
                head=q;        
                p->next=q;                
                这是要头插还是尾插?前一步头结点指向新结点,又让尾结点指向新结点
        */
                if ( !head )                // 头结点空就放头结点后面
                        head = q;
                else                                // 不空就放尾结点后面
                        p->next = q;
        
                p=q;        
        }
        
        p->next=head;
        
        return head;        
}
void Mangic(LinkList *head)
{
    int Number=2;
    int i;
    LinkList p;
    p= *head;                // head是二次指针,p是一次,解引用后再赋值
    p->data=1;
        
    while(1)
        {
                for(i=0;i<Number;i++)
                {
                        p=p->next;
                        if(p->data!=0)
                        {
                                //p->next;
                                i--;
                        }
                }
                
                if(p->data==0)
                {
                        p->data=Number;
                        Number++;
                        
                        if(Number==14)
                        {        
                                break;
                        }
                }        
        }        
}
int main(){
        
        int i;
    LinkList l;
    l=CreateList();
        
    Mangic(&l);
        
    for(i=0;i<CardNumber;i++)
        {
                printf("%d ", l->data);
                l=l->next;
        }
        
    return  0;
}
有问题点“回复”,没问题麻烦点一下“最佳答案” | 
 |