魔術師發牌問題 迴圈鍊錶

2022-02-12 07:44:19 字數 643 閱讀 9336

問題描述:

魔術師手裡一共有13張牌,全是黑桃,1~13.

魔術師需要實現乙個魔術:這是十三張牌全部放在桌面上(正面向下),

第一次摸出第一張,是1,翻過來放在桌面上。

第二次摸出從上往下數第二張,是2,翻過來 放在桌面上,(第一張放在最下面去,等會兒再摸),

第三次摸出從上往下數第三張,是3,翻過來放在桌面上,(第一張和第二張 放在最下面去,等會兒再摸)

以此類推 最後一張就是13

#include #include using namespace std;

typedef struct node

node;

node *create(int n)

p->next=h;

h=p;

return(h);//h為迴圈鍊錶尾指標

}int display(node * h)

if(i) coutwhile(p->num)//已填入元素,可以當成已從鍊錶中刪去

}q=p->next;

while(q->num)//已填入元素,可以當成已從鍊錶中刪去

q->num=i;

p=q;

}return 0;

}int main()

魔術師發牌問題(單迴圈鍊錶)

魔術師發牌問題,魔術師拿出13張黑桃撲克牌表演魔術,對底下觀眾講道,我只要數數就知道這張牌是什麼,然後數到1翻出來第一張a,並將a拿出來放到桌子上,用剩下的牌,重新數,數到2拿出來第2張牌.以此內推,求魔術師用怎樣的牌序才能達到此目的。首先分析問題,我們可以得到乙個大致的類似鍊錶牌序為 1 2 3 ...

魔術師發牌問題

說有乙個魔術師,他表演發牌的魔術,他將十三張黑桃牌放在一堆。然後開始數數,第一次,他數1,然後翻開第一張,果然是黑桃a,然後將黑桃a放到牌堆外。然後魔術師繼續數數,這次他數1,2,然後將數1的牌放到牌堆底,然後將數2的牌翻開,果然是黑桃2,然後將黑桃2放到一邊。繼續數1,2,3,果然每次都是對應的牌...

魔術師發牌問題

先搞清楚題意 注意按順序每翻到一張牌放到桌子上,不在手中了,其實是迴圈鍊錶的問題,可以在紙上模擬一下就可以得到牌開始的順序。1 一開始寫的比較麻煩 用兩個迴圈鍊錶,乙個放數字,乙個放序號,邊構造邊刪除,因為翻出來的牌已經放在一邊不在手上了,再用乙個card陣列存放開始的牌的順序。include st...