2015-05-04 5 views
0

я этот кодпытается понять этот LinkedList код вставки

struct Node { 
    int data; 
    struct *Node next; 
}; 

struct Node *head; 

void insert(int x) { 
    node* temp = (node*)malloc(sizeof(struct node)); 
    temp->data = x; 
    temp->next = head; 
    head = temp; 
} 

int main() 
{ 
    head = NULL; 
} 

Я следующий этот video, Похоже, код работает. Мне сложно с этим справиться.

У нас есть головка узла, которая изначально установлена ​​в NULL в основном методе.

Связанный список содержит int и следующий. Этот код вставки устанавливает данные в int и рядом с головой. Затем он настраивает голову на темп.

Не было бы это сделать, чтобы дать голове int, а затем заставить его указывать на себя снова и снова, так как мы устанавливаем temp.next на голову, а затем на head = temp?

До сих пор я делал только итерации на связанный список, где последний следующий - NULL.

ответ

0

Этот код вставляет элемент на начала из связанного списка - это создает новый узел, устанавливает свои данные, и делает его next точку текущего head.

0

No.

node* temp = malloc(sizeof(struct node)); 
temp->data = x; 

У нас есть новый узел, и установите его значение.

temp->next = head; 

head (если таковые имеются) придет после этого элемента в списке. Это означает, что это должно быть наш новый head.

head = temp; 

А теперь это так.

Если head был NULL, этот список не имеет next, как и ожидалось.

Если head не NULL был, этот узел является новый руководитель, и его next указывает на второго элемента в списке (старый head).

Смежные вопросы