1- class ListNode :
1+ class LinkedNode :
2+ def __init__ (self , val ):
3+ self .val = val
4+ self .next = None
5+
6+ def print (self ):
7+ node = self
8+ s = ""
9+ while node :
10+ s += str (node .val )
11+ if node .next :
12+ s += "->"
13+ node = node .next
14+ print (s )
15+
16+ @staticmethod
17+ def createLinkedList (nums ):
18+ head , pre = None , None
19+
20+ for num in nums :
21+ node = LinkedNode (num )
22+ if not head :
23+ head = node
24+ pre = node
25+ else :
26+ pre .next = node
27+ pre = node
28+ return head
29+
30+
31+ class DoubleLinkedNode :
232 def __init__ (self , key , value ):
333 self .key = key
434 self .value = value
@@ -11,8 +41,8 @@ def __init__(self, key, value):
1141# !! use dummy head and tail to simplify code
1242class DoubleLinkedList :
1343 def __init__ (self ):
14- self .head = ListNode (None , None )
15- self .tail = ListNode (None , None )
44+ self .head = DoubleLinkedNode (None , None )
45+ self .tail = DoubleLinkedNode (None , None )
1646 self .head .next = self .tail
1747 self .tail .pre = self .head
1848
@@ -27,8 +57,8 @@ def addToHead(self, node):
2757 self .head .next = node
2858 node .list = self
2959
30- def add (self , key , value ) -> ListNode :
31- node = ListNode (key , value )
60+ def add (self , key , value ) -> DoubleLinkedNode :
61+ node = DoubleLinkedNode (key , value )
3262 self .addToHead (node )
3363 return node
3464
@@ -43,15 +73,15 @@ def moveToHead(self, node) -> None:
4373 self .removeNode (node )
4474 self .addToHead (node )
4575
46- def removeHead (self ) -> ListNode :
76+ def removeHead (self ) -> DoubleLinkedNode :
4777 if self .isEmpty ():
4878 return
4979 node = self .head .next
5080 self .head .next = node .next
5181 node .next .pre = self .head
5282 return node
5383
54- def removeTail (self ) -> ListNode :
84+ def removeTail (self ) -> DoubleLinkedNode :
5585 if self .isEmpty ():
5686 return
5787 node = self .tail .pre
0 commit comments