单向循环链表与普通单链表类似,唯一的区别是单向循环链表的尾结点指向头结点,而普通单链表的尾结点指向None。
此处我们同样保持和普通单链表一样的“核心单元”:Node类
1 | #-*-coding:utf-8-*- |
构建单向循环链表CircularLinkedList类:
1 | class CircularLinkedList(object): |
在头部添加一个新结点
开篇已经提到,单向循环链表与普通单链表的不同之处在于尾结点也要指向头结点。所以在头部添加新结点需要有3步:
1.新结点new_node的_next指针指向原来_head结点
2.将_head指向新结点new_node
3.将尾结点的_next指针指向新结点new_node
1 | def insert_new_value_to_head(self, value): |
在尾部添加一个新结点
1.新结点new_node(现在的尾结点)指向_head
2.原来尾结点指向的是_head结点,现在指向new_node
1 | def insert_new_value_to_end(self, value): |