#include <cstdlib>
#include<iostream>
using namespace std;
typedef int ElemType;
typedef struct DNode
{ ElemType data,num;
struct DNode *next;
}DLinkList;
int InitList_DuL(DLinkList *&L) //初始化L。
{
L=(DLinkList *)malloc(sizeof(DLinkList));
if(L==NULL)
return false;
L->next=L;
L->num=0;
L->data=0;
return true;
}
void chushihua(DLinkList *&L) //创建一个头尾相接的循环单链表。
{
DLinkList *s;
for(int i=0;i<12;i++)
{
s=(DLinkList *)malloc(sizeof(DLinkList));
s->data=0;
s->num=0;
s->next=L->next;
L->next=s;
}
}
void Creat_DuL1(DLinkList *&L,int a[],int n) //n!=0时。
{
DLinkList *q,*p;
int m;
q=L;
p=L;
for(int j=0;j<13;j++)
{ m=n;
while((m+1)!=0)
{
q=q->next;
if(q->num==0)
m--;
}
if(q->num!=1)
{
q->data=a[j];
q->num=1;
}
else
{
q=q->next;
}
}
for(int x=0;x<13;x++)
{
p=p->next;
if(p->data>='A'&&p->data<='Z')
printf("%3c",p->data);
else
printf("%3d",p->data);
}
printf("\n");
}
void Creat_DuL2(DLinkList *&L,int a[]) //n==0时。
{
DLinkList *q,*p;
int s=1,m=1;
q=L;
p=L;
for(int j=0;j<13;j++)
{ m=s;
while((m+1)!=0)
{
q=q->next;
if(q->num==0)
m--;
}
if(q->num!=1)
{
q->data=a[j];
q->num=1;
}
else
{
q=q->next;
}
s++;
}
for(int x=0;x<13;x++)
{
p=p->next;
if(p->data>='A'&&p->data<='Z')
printf("%3c",p->data);
else
printf("%3d",p->data);
}
printf("\n\n");
}
void xsbz1(DLinkList *&L,char a[],int n) //显示步骤,n不等于0.
{
DLinkList *p,*q;
int j=0,i=0,m;
p=L;
for(i=0;i<13;i++)
{
m=n;
while((m+1)!=0)
{
p=p->next;
if(p->num==1)
m--;
}
p->num=0;
a[i]=p->data;
printf("第%d次翻牌",i+1);
for(j=0;j<=i;j++)
{
if(a[j]>='A'&&a[j]<='Z')
printf("%3c",a[j]);
else
printf("%3d",a[j]);
}
printf("\n");
q=p->next;
printf("输出翻拍后的牌型");
for(j=13;j>0;j--)
{
if(q->num==0)
q=q->next;
else
{
if(q->data>='A'&&q->data<='Z')
printf("%3c",q->data);
else
printf("%3d",q->data);
q=q->next;
}
}
printf("\n\n\n");
}
}
void xsbz2(DLinkList *&L,char a[]) //显示步骤,n==0.
{
DLinkList *q,*p;
int s=1,m=1;
int j,i;
q=L;
for(j=0;j<13;j++)
{ m=s;
while((m+1)!=0)
{
q=q->next;
if(q->num==1)
m--;
}
a[j]=q->data;
q->num=0;
s++;
printf("第%d次翻牌",j+1);
for(i=0;i<=j;i++)
{
if(a[i]>='A'&&a[i]<='Z')
printf("%3c",a[i]);
else
printf("%3d",a[i]);
}
printf("\n");
p=q->next;
printf("输出翻拍后的牌型");
for(i=13;i>0;i--)
{
if(p->num==0)
p=p->next;
else
{
if(p->data>='A'&&q->data<='Z')
printf("%3c",p->data);
else
printf("%3d",p->data);
p=p->next;
}
}
printf("\n\n\n");
}
}
void main()
{
DLinkList *L;
int n;
ElemType a[]={'A',2,3,4,5,6,7,8,9,10,'J','Q','K'};
char b[13];
InitList_DuL(L);
chushihua(L);
printf("输入n的值:");
scanf("%d",&n);
if(n!=0)
Creat_DuL1(L,a,n);
else
Creat_DuL2(L,a);
if(n!=0)
xsbz1(L,b,n);
else
xsbz2(L,b);
}
xxxx.rar_K.
版权申诉
185 浏览量
2022-09-19
19:41:19
上传
评论
收藏 1KB RAR 举报
![avatar](https://profile-avatar.csdnimg.cn/36163497263541e6b6d5b627b1692a97_weixin_42653691.jpg!1)
朱moyimi
- 粉丝: 65
- 资源: 1万+