在尝试理解链接列表时,我遇到了构建链接列表的这种或类似方法:
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; ?
答案 0 :(得分:2)
因为这种方式也适用于C语言。
当您编写可以在C和C ++中使用的库时,这非常有用。
也可能是代码以前是C,然后转移到C ++以在代码的其他部分使用某些C ++功能。
答案 1 :(得分:0)
既然您已经标记了C ++而不是C的问题,那么
是最明智的答案但为什么要使用它代替std :: list&lt; ..&gt;
如果您可以使用标准库及其单链接列表类模板std::forward_list
,那么您就不会这样做。例如,某些嵌入式环境可能允许您使用C ++及其大部分功能,但不是所有标准库。