将结构附加到链接列表

时间:2014-03-04 22:42:14

标签: c++ linked-list append structure

如何在链表中追加类的结构。 该类将使用具有DVD标题及其长度的结构。每个DVD都将是此结构的一个实例,并将存储在链表中。此外,链表应具有结构的数据类型

class DVD
{
private:
struct disc
  {
    int length;
    string title;
  }my_disc;

public:
// Constructor
DVD(int, string);

};

链接列表

template <class T>
class LinkedList1 
{
private:
// Declare a structure
struct discList
{
    T value;
    struct discList *next;  // To point to the next node
};

discList *head;     // List head pointer

public:
// Default Constructor
LinkedList1()
{ head = NULL; }


// Destructor
~LinkedList1();

// Linked list operations
void appendNode(T);
void insertNode(T);
void deleteNode(T);
void displayList() const;
};

是不是

// Declare a DVD object
DVD dvd(105, "Spider Man"); // length and title

// Declare a linked list object with the data type of the struct disc.
LinkedList1<DVD> movie; 
// or
LinkList1<DVD::my_disc> movie;

// and then append it
movie.appendNode(dvd)

如果我从class DVD中移除了结构,只是将数据成员lengthtitle作为私有成员,那么我知道LinkedList1<DVD> movie;可以附加节点。结构让我失望。我不明白“链表的数据类型应该是结构”。对我来说,似乎是LinkedList1<disc>movie;,因为disc是结构的名称。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

我不明白&#34;链表的数据类型应该是结构&#34;。

我不明白你从哪里得到的。我怀疑在这句话中,struct和class是同义词。

  1. DVD和光盘关系不是&#34; DVD 光盘&#34;,但&#34; DVD 包含光盘实例&#34;。
  2. 如果&#34;电影&#34;有一个LinkedList1类型,然后movies.appendNode(spiderman)要求蜘蛛侠是DVD类型(或者可以隐式转换为DVD)。
  3. 我认为这样做没有问题。事实上,它通常是如何完成的,DVD内部只有DVD类问题。