链表构造函数

Linked List constructor

本文关键字:构造函数 链表      更新时间:2023-10-16

我正在尝试为只有一个字段的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;
}

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

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

在 curr 旁边设置 phead-> 将使 phead 列表包含正在 curr 值中创建的节点,从而将 curr 添加到链表中。

我希望这有帮助!