数据结构中的链表到底有多少种?我在这里可以很明确地告诉大家,八种!当然,大家了解一下就好,不需要全部信手拈来,八种链表结构如下:
今天,我们要着重讨论的,是实现一个链表界结构最复杂的带头节点的双向循环链表。
首先,我们来看一下他到底是什么样子,请看下图:
链表中每个节点有三个元素:指向下一个节点的指针 next、指向前一个节点的指针 prev、数据 data。其中,最后一个元素的 next 指针指向头节点,头节点的 prev 指针指向最后一个元素。
好了,知道他的结构后,我们就可以试着编写代码了。第一步,我们需要对其进行初始化,可别忘了,他还有一个头节点的呦,所以我们应该先实现一个接口来初始化头节点。这里,我们创建出一个头节点,将他的 next 指针和 prev 指针都指向自己。然后将头指针返回给主函数。
typedef struct ListNode{
int data;
struct ListNode * next;
struct ListNode * prev;
}Node;