2016-02-06 53 views
0

我試圖創建一個Deck類只有一個領域的構造函數:一個指向node類對象。 A node有兩個字段,一個卡對象和一個指向另一個節點(鏈表)的指針。鏈表構造

我試圖建立使用這種構造一副牌,但是當我打印出來,只顯示一張卡,導致我相信,構造函數不能正常工作。

我的印刷方法工作得很好,我和其他的例子進行了測試。我故意用同一張卡片兩次啓動卡組,之後我會將其刪除。

Deck::Deck(){ 
    node* phead; 
    phead = new node(Card("A","Heart")); 
    node* curr; 
    node* next; 
    curr = phead->next; 

    string suits[4] {"Heart", "Spade", "Club", "Diamond"}; 
    string values[13] {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; 

    for(int i = 0; i < 4; i++){ 
     for(int j = 0; j < 13; j++){ 
      curr = new node(); 
      curr->card = Card(values[j], suits[i]); 
      next = curr->next; 
      curr = next; 
     } 
    } 
    curr=NULL; 
    deck = phead; 
} 
+0

提示:你不是你的節點之間的連接正常。 – SomeWittyUsername

+0

變量聲明末尾不應該是'curr = phead' – macroland

回答

1

而不是設置curr = phead->next,儘量phead->next = curr

你的代碼出現CURR的值被設置爲phead-的價值>未來,這是從來沒有在這個代碼被更改。

設置phead->旁邊CURR使得PHEAD列表包含在CURR價值正在創建的節點,增加CURR您鏈表會做到。

我希望這有助於!

+0

感謝您的幫助!真的很感激它,鏈表有點棘手 –