C: использование часовых в списках - PullRequest
0 голосов
/ 05 декабря 2018

Здравствуйте, я изучаю связанные списки, и мне нужно написать несколько функций с помощью часового.У меня есть это определение: часовой является поддельным элементом, который является первым элементом списка.Пустой список - это один часовой, а не нулевой указатель.

Мне нужно инициализировать часовой пустой список

void list_init(struct list *list);

и проверить, пуст ли список (возвращаемое значение true пусто))

int list_is_empty(struct list *list);

но я полностью растерялся, не могли бы вы мне помочь, спасибо!

1 Ответ

0 голосов
/ 05 декабря 2018

Узел связанного списка всегда имеет следующего члена

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

Когда вы создаете свой страж, вы инициализируете рядом с NULL

void list_init(struct list *list)
{
    list->data = -1;
    list->next = NULL;
}


struct list *head = malloc(sizeof(struct list));
list_init(head);

Теперь у главы есть следующий член NULL, поэтомувсе, что вам нужно сделать, это проверить, равно ли next значение NULL

int list_is_empty(struct list *list)
{
    if (list->next == NULL) return 1;

    return 0;
}

Когда вы добавите одну головку узла -> next станет NOT NULL, и вы узнаете, что список не пуст.Но вы должны убедиться, что вы всегда передаете голову функции list_functions.

...