数据结构与算法-线性表15
//魔术师发牌#include <stdio.h>
#include <stdlib.h>
typedef struct Linklist
{
int num;
struct Linklist *next;
}Linklist;
Linklist *create(int n)//创建n个数据结构
{
Linklist *p=NULL,*head,*temp;//
int i=1;
head=(Linklist *)malloc(sizeof(Linklist));//申请内存
p=head;
if(0!=n)
{
while(i<=n)
{
temp=(Linklist *)malloc(sizeof(Linklist));
temp->num=0;
p->next=temp;
p=temp;
i++;
}
temp->next=head->next;//最后一个指向第一个结点,最开始的舍去
}
free(head);
return temp->next;//返回第一个结点指针
}
void card_num(Linklist *p)
{
int i;
int number=2;
Linklist *temp=NULL;
temp=p;
temp->num=1;//第一张牌为黑桃A
while(1)
{
for(i=0;i<number;i++)
{
temp=temp->next;
if(temp->num!=0)
{
i--;//跳过前面已经翻开的牌
}
}
if(temp->num==0)
{
temp->num=number;
number++;
if(number==14)
{
break;
}
}
}
}
void main()
{
Linklist *p,*temp1,*temp2;
int n=13,i,j;
p=create(13);
card_num(p);
printf("扑克牌顺序为:\n");
for(i=0;i<13;i++)
{
printf("黑桃%d\n",p->num);
p=p->next;
}
printf("\n");
}
页:
[1]