gpt4 book ai didi

C:在列表上使用哨兵

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:12 26 4
gpt4 key购买 nike

你好,我正在学习链表,我必须使用哨兵编写几个函数。我有这样的定义:哨兵是一个假元素,它是列表的第一个元素。一个空列表是一个单一的哨兵,而不是一个 NULL 指针。

我需要初始化一个空列表的哨兵

void list_init(struct list *list);

并检查列表是否为空(返回true为空)

int list_is_empty(struct list *list);

但是我完全迷路了,你能帮帮我吗,谢谢!

最佳答案

链表节点总是有下一个成员

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);

现在 head 有一个 next 成员 NULL 所以你所要做的就是检查 next 是否等于 NULL

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

return 0;
}

一个你添加一个节点 head->next 变为 NOT NULL 并且你将知道列表不为空。但是您必须确保始终将 head 传递给 list_functions。

关于C:在列表上使用哨兵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53633567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com