循环链表
无论是静态链表还是动态链表,有时在解决具体问题时,需要我们对其结构进行稍微地调整。比如,可以把链表的两头连接,使其成为了一个环状链表,通常称为循环链表,例如:
需要注意的是,虽然循环链表成环状,但本质上还是链表,因此在循环链表中,依然能够找到头指针和首元节点等。循环链表和普通链表相比,唯一的不同就是循环链表首尾相连,其他都完全一样
循环链表的实现
循环链表和链表唯一的不同时是:
- 链表的最后一个结点tail的next域为NULL,
- 循环链表是在链表的基础上改动的,最后一个结点tail的next域为头指针H,不过这种说法是不严谨的,因为循环链表哪个结点都能作遍历指针开始遍历。即是循环链表多一句:
tail->next=head
,这是没有头结点的循环链表。