建立一个循环单链表,其节点有 prior,data 和 next 三个域,其中 data 为数 据域,存放元素的有效信息,next 域为指针域,指向后继节点,prior 为指针域,它的 值为 null。编写一个算法将此表改为循环双链表
时间: 2023-04-25 14:06:06 浏览: 68
建立循环单链表的代码:
```
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prior = None
class CircularLinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
new_node.next = self.head
else:
current = self.head
while current.next != self.head:
current = current.next
current.next = new_node
new_node.next = self.head
def print_list(self):
if self.head is None:
print("List is empty")
else:
current = self.head
print(current.data)
while current.next != self.head:
current = current.next
print(current.data)
```
将循环单链表改为循环双链表的代码:
```
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prior = None
class CircularLinkedList:
def __init__(self):
self.head = None
def add_node(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
new_node.next = self.head
new_node.prior = self.head
else:
current = self.head
while current.next != self.head:
current = current.next
current.next = new_node
new_node.next = self.head
new_node.prior = current
def print_list(self):
if self.head is None:
print("List is empty")
else:
current = self.head
print(current.data)
while current.next != self.head:
current = current.next
print(current.data)
```