【问题标题】:doubly linked list 2 values c++双向链表2值c ++
【发布时间】:2012-01-23 13:50:55
【问题描述】:

我需要用 C++ 为学校制作一个扑克游戏。 我制作了一个班级卡片和甲板。 我需要制作所有卡片的双向链表,每张卡片都有一个花色和一个等级(值)。如何将 2 个属性(花色和等级)附加到双向链表中的卡片。

【问题讨论】:

  • 是在重新创建您自己的双向链表部分,还是您可以使用 std::list,它已经为您完成了所有这些工作?
  • 您的问题到底是什么?你尝试过什么,你在哪里卡住了?
  • “我需要为学校制作一款扑克游戏”。哈哈,我以为你在问学校里最好的秘密地点,举办扑克派对。

标签: c++ list linked-list poker


【解决方案1】:

双链表是一个结构(结构或类),带有指向上一个和下一个链接的指针。除了这些指针之外,您还可以添加任意数据,这些数据可以被视为有效负载。在那里你可以放任何你想要的数据。这是一个例子:

class Card {
    public:
       // Constructor
       Card(int rank, int suit, Card* prev=NULL) 
       {
           if (prev)
           {
             m_prev = prev; 
             prev->m_next = this;
           }
           m_prev = prev;
           m_rank = rank;
           m_suit = suit;
       }
       // Accessors
       int Rank() { return m_rank; }
       int Suit() { return m_suit; }
       Card* Prev() { return m_prev; }
       Card* Next() { return m_next; }

    private:
       int m_rank, m_suit;
       Card *m_prev, *m_next;
}

【讨论】:

  • 嗯...我个人不会在卡片类中包含下一个和上一个指针。有几个原因,它将上市责任与卡片模型混为一谈,并且没有明显的单一用途......它可以链接到下一个最高价值的卡片,它可以链接到手牌的下一张卡片,它可以链接到下一个数值等...如果您有List<Card> hand, deck, suit;,则没有误解的余地。
  • 我完全同意。但是由于问题的新手风格,我不想混入模板的概念。一旦他理解了双链表及其有效负载的基本概念,我确实会使用您建议的抽象。
【解决方案2】:

花色和点数是卡片的属性,与链表无关。因此,最好将这些属性封装到Card 类中。

如果您已经这样做了,但仍有不清楚的地方,请扩展您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多