由于最近在学习链表,所以写了几个关于循环链表的问题。但由于刚刚开始学,代码写的并不是很好。但想记录一下。
#include<iostream>
#include<stdlib.h>
using namespace std;
struct Node{
int data;
Node *Next;
};
int main(){//魔术师发牌问题
Node *pNode=(Node*)malloc(sizeof(Node));//生成一个线性链表
pNode->data=0;
pNode->Next=pNode;
Node *p=pNode;
for(int i=1;i<=12;i++){
Node *h=(Node*)malloc(sizeof(Node));
h->data=0;
h->Next=p->Next;
p->Next=h;
p=h;
}
Node *t=pNode;//循环解决问题
for(int j=1;j<=13;j++){
for(int x=1;;){
if(x==j&&t->data==0){
t->data=j;
break;
}
if(t->data==0){
x++;
t=t->Next;
}
else{
t=t->Next;
}
}
}
Node *y;//输出结果
for(y=pNode;y->Next!=pNode;y=y->Next){
cout<<y->data<<endl;
}
cout<<y->data<<endl;
return 0;
}