|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
魔术师发牌,第n张牌空n个位置,假定一共13张牌
编译器没报错,可能是循环写错了?
看看有什么地方错了?
- #include <stdio.h>
- #include <stdlib.h>
- #define CardNumber 13
- typedef struct node
- {
- int data;
- struct node *next;
- } sqlist, *linklist;
- linklist CreateLinkList();
- void Magician(linklist);
- void DestoryList(linklist p);
- int main(void)
- {
- 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;
- }
- linklist CreateLinkList()
- {
- linklist head = NULL;
- linklist p = NULL;
- head->next = p;
- int i, n;
- n = CardNumber;
- for (i = 0; i < n; i++)
- {
- p = (linklist)malloc(sizeof(sqlist));
- p->data = 0;
- p = p->next;
- }
- p->next = head;
- return head;
- }
- void Magician(linklist p)
- {
- int n, count, i;
- p->data = 1;
- count = 2;
- while (1)
- {
- for (i = 0; i < count; i++)
- {
- p = p->next;
- if (p->data != 0)
- {
- p = p->next;
- i--;
- }
- }
- if (p->data == 0)
- {
- p->data = count;
- count++;
- }
- if (count == 14)
- {
- break;
- }
- }
- p = p->next;
- }
- void DestoryList(linklist p)
- {
- linklist temp = p;
- for (int j = 0; j < CardNumber; j++)
- {
- temp = p;
- p = p->next;
- free(temp);
- }
- }
复制代码
|
|