双向循环链表和双向链表类似,不同的地方在于双向循环链表尾结点的后继指针指向头结点,而头结点的前驱指针指向尾结点。
结点Node类:
1 | class Node(object): |
双向循环链表类:
1 | class DoubleCircularLinkedList(object): |
在头部插入新结点:
1 | def insert_new_value_to_head(self, value): |
给定结点后插入新结点:
1 | def insert_new_value_after_target_node(self, value, node): |
给定结点前插入新结点:
1 | def insert_new_value_before_target_node(self, value, node): |
判断链表是否为空:
1 | def is_empty(self): |
删除给定结点:
1 | def delete_target_node(self, node): |
根据值查找给定结点:
1 | def find_by_value(self, value): |
获取链表长度:
1 | def get_linked_list_length(self): |