2016-03-28 146 views
1

我正在编写一个C++程序,它必须使用链接列表。但我不知道如何访问另一个结构中的结构。在struct C++中访问struct

#include <cstddef> 
#include "list.hpp" 
using std::size_t; 

struct list { 
    struct node { 
     double val; 
     node* prev; 
     node* next; 
    }; 

    node* head = nullptr; 
    node* tail = nullptr; 
    size_t size = 0; 
}; 

你能解释一下它是如何工作的吗?我有一个方法,但我不知道如何在此方法中使用此结构。

void push_back(list& l, double elem) { 
    node *new_node = new node(elem); 
    if (l.head==null) { 
     l.head = new_node; 

    } 
    node *curent = l.head; 
    while (curent) { 
     if (!curent->next) { 
      curent->next = new_node; 
     } 
     cur = cur->next; 
    } 
} 

谢谢。

在此代码
+4

'list :: node'而不是'node' – deviantfan

+0

你还没有定义'node'构造函数,所以你不能做'新节点(elem)'。 – Barmar

+0

@Barmar,所以你的意思是它必须像这样'list :: node * new_node = new list :: node(elem);'? – Lemmy

回答

1

,你有一个双向链表

我会尽力解释的push_back函数的代码。

在开始时我们有void push_back(列表& l,双elem),l是你当前的LinkedList,当你想在队列中添加一个新的元素时,elem是你新元素的值。

if (l.head==null) { 
    l.head = new_node; 
} 

如果你的链表是空的,我们添加新元素

exemple1 : empty LinkedList

如果链表不为空

push back

这是一个简单的代码