struct node vs std :: list< >

时间:2015-02-19 10:08:26

标签: c++ linked-list nodes stdlist

在尝试理解链接列表时,我遇到了构建链接列表的这种或类似方法:

typedef struct node{
    int data;
    node *next;
}node;

node* init(int a[], int n){
    node *head, *p;
    for(int i=0; i<n; ++i){
        node *nd = new node();
        nd->data = a[i];
        if(i==0){
            head = p = nd;
            continue;
        }
        p->next = nd;
        p = nd;
    }
    return head;
}

但为什么要使用它代替std :: list&lt; ..&gt; ?

2 个答案:

答案 0 :(得分:2)

因为这种方式也适用于C语言。

当您编写可以在C和C ++中使用的库时,这非常有用。

也可能是代码以前是C,然后转移到C ++以在代码的其他部分使用某些C ++功能。

答案 1 :(得分:0)

既然您已经标记了C ++而不是C的问题,那么

是最明智的答案
  

但为什么要使用它代替std :: list&lt; ..&gt;

如果您可以使用标准库及其单链接列表类模板std::forward_list,那么您就不会这样做。例如,某些嵌入式环境可能允许您使用C ++及其大部分功能,但不是所有标准库。