Python 如何在已排序的双链接列表中创建添加和删除函数
下面是三个类:节点、双链表和排序列表,它们在双链表上实现。这是我的密码:Python 如何在已排序的双链接列表中创建添加和删除函数,python,list,doubly-linked-list,sortedlist,Python,List,Doubly Linked List,Sortedlist,下面是三个类:节点、双链表和排序列表,它们在双链表上实现。这是我的密码: class DLLNode(object): def __Init__ (self, data, prev_node=None, next_node=None): self.data=data self.prev_node=prev_node self.next_node=next_node def __str__(self): return str(self.data) cl
class DLLNode(object):
def __Init__ (self, data, prev_node=None, next_node=None):
self.data=data
self.prev_node=prev_node
self.next_node=next_node
def __str__(self):
return str(self.data)
class DoublyLinkedList(object):
def __init__(self, head=None, tail=None):
self.head=head
self.tail=tail
self.size=0
def add_to_head(self, data):
newNode = DLLNode(data)
if self.head==None:
self.head=self.tail=newNode
self.head.prev_node=self.tail.next_node=None
else:
self.head.prev_node=newNode
newNode.next_node=self.head
self.head=newNode
def add_to_tail(self, data):
newNode=DLLNode(data)
if self.head==None:
self.head=self.tail=newNode
self.head.prev_node=self.tail.next_node=None
else:
self.tail.next_node=newNode
newNode.prev_node=self.tail
self.tail=newNode
self.tail.next_node=None
def remove_head(self):
node=self.head
if self.head==self.tail:
self.prev_node=self.next_node=self.head=self.tail=None
return
if self.head!=self.tail:
node=node.next_node
node.prev_node=None
self.head=node
def remove_tail(self):
node=self.tail
if self.head==self.tail:
self.prev_node=self.next_node=self.head=self.tail=None
return
if self.head!=self.tail:
self.tail=node.prev_node
self.tail.next_node=None
def index(self,element):
current = self.head
while current != None:
if current.data == element:
return current.position
else:
current = current.next
return -1
class SortedList(object):
def __init__(self, sequence = []):
if len(sequence)==0:
self.head = None
self.tail = None
else:
cur_node = None
prev_node = None
sequence.sort()
sequence.reverse()
for element in sequence:
prev_node = cur_node
cur_node = DLLNode(element, cur_node, prev_node)
self.head = cur_node
self.tail = DLLNode(sequence[0])
对于排序列表类,我需要创建一个add和remove函数。然而,我真的不知道怎么做。有人能告诉我吗?你所提供的代码是不完整的,考虑更新它。第三类我真的不知道怎么做。这更多的是一个关于算法的问题,在插入后保持排序列表排序。你的课本或课堂讲课怎么说?