具有结构的数据类型的链接列表

时间:2014-03-04 17:31:00

标签: c++ struct linked-list declaration

如何在main中使用struct的数据类型声明链表的实例? 例如......我应该有一个包含信息结构的类。链表应该具有结构的数据类型。这是指令:DVD类具有结构,其中一个数据成员是链接列表的实例,该结构作为数据类型。

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

链接列表

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;
};

2 个答案:

答案 0 :(得分:3)

您需要做的就是在尖括号之间指定类型,如下所示:
LinkedList1<DVD> myLinkedList;

修改

以下是场景背后发生的事情,编译器会用T替换每个DVD

回到你的代码,我们得到了这个:

struct discList
{
    DVD value; // You used to have T here
    struct discList *next;  // To point to the next node
};

并且您将拥有一个链接列表,其中每个节点都是一个保持DVD值的结构。

答案 1 :(得分:0)

模板类可以访问结构的名称。

您可以分别定义此结构并在类DVD中同时使用其定义,并作为模板类的模板参数,例如

struct disc
{
int length;
string name;
};


class DVD
{
private:
   disc obj;
};

然后

LinkedList<disc> l;

或者您可以在DVD类中为结构光盘定义公共typedef。例如

class DVD
{
private:
struct disc
{
int length;
string name;
};
public:
  typedef disc disc_t;
};


LinkedList<DVD::disc_t> l;