Вопрос

Может кто-нибудь объяснить это?

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
    

    делает этот новый узел главой вашего списка.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top