c - 链表定义

标签 c data-structures linked-list

这段代码来 self 在学校为数据结构模块做的作业。问题中提供了这段代码,我无法理解。

typedef struct _listnode {
    int item;
    struct _listnode *next;
} ListNode; // You should not change the definition of ListNode

typedef struct _linkedlist {
    int size;
    ListNode *head;
} LinkedList; // You should not change the definition of LinkedList 

我很困惑,因为我的讲座幻灯片和我去过的网站只定义了节点,而不是第二个节点。

谁能帮我解决这个问题?

最佳答案

LinkedList 是一个结构体,通过包含其头部和大小来表示链表,而列表中的每个节点由结构体 ListNode 表示。如果您想保持链表的大小,这是一种常见的范例,在这种情况下,您可以轻松获得列表中的节点数,而无需遍历它。另一方面,如果大小不是问题,您可以只使用指向节点的指针作为头部,而无需定义 LinkedList 结构。

所以对于一个空列表,你会:

LinkedList list = (struct LinkedList){0, NULL};

对于只有一个节点的列表:

ListNode node;
node.item = 0;
node.next = NULL;
list.head = &node;
list.size = 1;

关于c - 链表定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43364604/

相关文章:

algorithm - 哈希表与树

c - 如何在一个循环中组合序列号和null?

c - 如何识别/proc/$PID/maps文件中的STACK和HEAP段?

java - 并发,随机化/改组队列?

data-structures - 堆栈和队列,为什么?

c - 当所有元素都被覆盖时,我的链表数组实现有什么问题?

c - C 中带有链表和计数器的队列

c - 如何通过采用结构的函数来解决这种循环依赖问题?

c - TCP套接字编程

c - 如何在 C 中调用以函数指针作为参数的函数?