Вопрос
Может кто-нибудь объяснить это?
struct node
{
int data;
struct node * link;
}
main()
{
struct node *p, *list, *temp;
list = p = temp = NULL;
.........................
.........................
}
addbeg()
{
int x;
temp=malloc(sizeof(struct node));
scanf("%d", &x);
temp->data=x;
temp->link = list;
list=temp;
}
Это код для ввода данных в связанный список через язык Си. Код не полный, но я думаю, что этого достаточно для этой цели. Пожалуйста, объясните кодировку в основном этими строками:
temp=malloc(sizeof(struct node));
и
temp->link = list;
list=temp;.
Решение
malloc ()
используется для выделения памяти - в данном случае для нового узла.
Функция addbeg ()
, определенная в вашем коде, выполняет следующие действия:
x
. % d
code в scanf
) и сохраняет его в x
. x
в поле данных вновь выделенного узла. list
как ссылка во вновь выделенном узле. list
'. Это очень простая реализация связанного списка ( http://en.wikipedia.org/wiki / Linked_list ) целых чисел.
Другие советы
первая строка: выделите память для одного дополнительного узла в списке.
вторая строка: присоединить текущий список как продолжение после этого элемента.
третья строка: сделать текущий элемент началом списка.
temp и list не видны в addbeg, так как они объявлены в main. Они либо должны быть переданы в addbeg, либо объявлены вне main (global, yuck). Р>
malloc выделяет пространство для нового узла.
temp->link = list
и
list = temp
делает этот новый узел главой вашего списка.