笔记
#include<stdio.h>
#include<stdlib.h>
#define CardNumber 13
typedef struct node
{
int data;
struct node *next;
}sqlist,*linklist;
linklist CreateLinkList()
{
linklist head = NULL;
linklist s,r;
int i;
r = head;
for(i=1; i<=CardNumber; i++)
{
s = (linklist)malloc(sizeof(sqlist));
s->data = 0;
if(head == NULL)
{
head = s;
}
else
{
r->next = s;
}
r = s;
r->next = head;
}
return head;
}
//发牌顺序计算
void Magician(linklist head)
{
linklist pa;
int j;
int Countnumber = 2;
pa = head;
pa->data = 1;//阿权,这条语句一执行,pa->next->data也会被赋值为1
while(1)
{
for(j=0; j<Countnumber; j++)
{
pa = pa->next;
if(pa->data != 0)
{
pa->next;
j--;
}
}
if(pa->data == 0)
{
pa->data = Countnumber;
Countnumber++;
if(Countnumber == 14)
{
break;
}
}
}
}
//销毁工作
void DestoryList(linklist *list)
{
linklist ptr = *list;
linklist buff[CardNumber];
int i=0;
while(i < CardNumber)
{
buff[i++] = ptr;
ptr = ptr->next;
}
for(i=0; i<CardNumber; ++i)
{
free(buff[i]);
}
*list = 0;
}
int main()
{
linklist p;
int i;
p = CreateLinkList();
Magician(p);
printf("按如下顺序排列:\n");
for(i=0; i<CardNumber; ++i)
{
printf("黑桃%d ",p->data);
p = p->next;
}
DestoryList(&p);
return 0;
}