При попытке понять связанные списки, я сталкивалась с этим или подобным образом, чтобы построить связанные списки:структура узел против станда :: Список < >
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;
}
Но зачем использовать это вместо станд :: списка <. .>?
Почему этот typedef называется 'node' структуры с именем 'node' тоже? – AnArrayOfFunctions
Я голосую, чтобы закрыть этот вопрос, так как нет «правильного» ответа. Я предполагаю, что реализация одноуровневых списков вместо использования 'std :: list' полезна в качестве упражнения и для понимания того, почему определенные алгоритмические сложности в' std :: list' (например, константа вставки, являющаяся линейной), являются так они и есть. Часть 'typedef struct node' выглядит так, как будто это было основано на некотором C-коде. –
В производственном коде нет причин. Это часто учебное упражнение, чтобы узнать, как связанные списки работают под капотом. –