这段代码来 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/