int main(void)
{
// create a node
node* list1 = malloc(sizeof(node));
node* list2 = malloc(sizeof(node));
list1 -> n = 2;
list2 -> n = 5;
list1 -> next = list2;
list2 -> next = NULL;
if(search(5, list1))
printf("True\n");
else
printf("False\n");
}
В приведенной выше программе, когда я инициализировал переменные типа node, мне пришлось явно выделять память для этих переменных, иначе компилятор выдавал ошибки.Ошибка с распределением памяти
bool search(int n, node* list)
{
node* ptr = list;
while(ptr != NULL)
{
if(ptr -> n == n)
{
return true;
}
ptr = ptr->next;
}
return false;
}
но, в приведенной выше функции «поиск» У меня есть переменная узла «PTR» типа, но я получил через без явного выделения памяти для него. Почему в этой функции нет ошибок?
Вы пропустили 'node * ptr = list;' part? –
Перед тем, как попытаться использовать его, вам необходимо присвоить значение переменной указателя. В 'main' не было выделенных узлов, поэтому вам пришлось выделить их с помощью' malloc'. В 'search' вы передаете один из них в качестве аргумента и присваиваете его' ptr'. Поэтому 'ptr' вначале указывает на узел, который был передан ему. Я предполагаю, что вы скопировали этот код и пытаетесь его понять? –