2016-02-06 29 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

感谢您的帮助!真的很感激它,链表有点棘手 –