c - 在 C 链表中,为什么节点也是指针?

标签 c pointers linked-list

<分区>

当我们尝试实现链表时,我无法理解我们创建节点指针而不是节点结构的原因:

typedef struct node {
    int val;
    struct node * next;
} node_t;

node_t * head = NULL;
head = malloc(sizeof(node_t));
if (head == NULL) {
    return 1;
}

head->val = 1;
head->next = NULL;

这里,为什么要将head等节点声明为结构体的指针,而不是直接结构体>

最佳答案

head 作为指针允许诸如空列表之类的事情 (head == NULL) 或删除列表前面元素的简单方法,通过移动head 指向列表中另一个(例如第二个)元素的指针。将 head 作为结构,这些操作将不可能实现,或者至少实现起来效率低得多。

关于c - 在 C 链表中,为什么节点也是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48827552/

相关文章:

将文本文件中的小写字符转换为大写字母,反之亦然

c - g_array_sort 不适用于字符串

使用avr控制多个 Helm 机

c - 什么是双星(例如 NSError **)?

c++ - 指向引用/地址参数的指针

Scala:这是 LinkedListLike 特征中的错误吗?

c - C 中字符串替换多次出现

c - C中的指针初始化和字符串操作

c++ - 删除链表的头节点? C++

java - 如何遍历我的链表来搜索和删除特定的字符串?