链接列表构造函数

时间:2016-02-06 23:39:19

标签: c++ linked-list

我试图为Deck类创建一个只有一个字段的构造函数:指向node类对象的指针。 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;
}

1 个答案:

答案 0 :(得分:1)

尝试curr = phead->next

,而不是设置phead->next = curr

您的代码似乎是将curr的值设置为phead-&gt; next的值,在此代码中永远不会更改。

在curr旁边设置phead-&gt;将使得phead列表包含在curr值中创建的节点,将curr添加到链接列表中。

我希望这有帮助!