演算法雜談 用雙鏈表實現洗牌

2021-06-19 10:10:32 字數 1007 閱讀 7902

思路:首先構建雙鏈表,把54張牌串聯起來!然後迴圈隨機抽牌。第一次從54張牌中抽取一張,第二次從剩餘的53張牌中抽取一張,以此內推,直到剩餘的牌為0

#include #include #include #include #include //54張牌,s表示10,x表示小王,d表示大王

char pai=;

//儲存洗牌後的結果

char res[54];

//鍊錶節點結構

typedef struct puke

puke;

//雙鏈表

typedef struct dlink

dlink;

//初始化雙鏈表

void init(dlink *link)

p->next=null;

}//洗牌

void shuff(dlink *link)

else if(p==link->head&&p->next!=null)

else if(p->next==null)

else

//剩餘牌數量減1

current--; }}

int main()

else

if((i+1)%17==0)

}putchar('\n');

return 0;

}

結果:

可以每17張排個序,這樣更像鬥地主發牌

雙鏈表演算法

package main import fmt type node struct 末尾插入 func insert head node,newnode node tmp tmp.next 正向遍歷 func list head node forelse tmp tmp.next 反向遍歷 func ...

演算法(雙鏈表)

實現乙個雙鏈表,雙鏈表初始為空,支援5種操作 1 在最左側插入乙個數 2 在最右側插入乙個數 3 將第k個插入的數刪除 4 在第k個插入的數左側插入乙個數 5 在第k個插入的數右側插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從左到右輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊...

雙鏈表實現

一 實驗目的 鞏固線性表的資料結構的儲存方法和相關操作,學會針對具體應用,使用線性表的相關知識來解決具體問題。二 實驗內容 建立乙個由n個學生成績的順序表,n的大小由自己確定,每乙個學生的成績資訊由自己確定,實現資料的對錶進行插入 刪除 查詢等操作。分別輸出結果。三 源 includeconst i...