@@ -486,15 +486,10 @@ class MyLinkedList {
486
486
Python:
487
487
``` python
488
488
# 单链表
489
- class Node (object ):
490
- def __init__ (self , x = 0 ):
491
- self .val = x
492
- self .next = None
493
-
494
- class MyLinkedList (object ):
489
+ class MyLinkedList1 :
495
490
496
491
def __init__ (self ):
497
- self .head = Node()
492
+ self .dummy_head = Node()# 添加虚拟头指针,便于操作
498
493
self .size = 0 # 设置一个链表长度的属性,便于后续操作,注意每次增和删的时候都要更新
499
494
500
495
def get (self , index ):
@@ -504,7 +499,7 @@ class MyLinkedList(object):
504
499
"""
505
500
if index < 0 or index >= self .size:
506
501
return - 1
507
- cur = self .head .next
502
+ cur = self .dummy_head .next
508
503
while (index):
509
504
cur = cur.next
510
505
index -= 1
@@ -516,8 +511,8 @@ class MyLinkedList(object):
516
511
:rtype: None
517
512
"""
518
513
new_node = Node(val)
519
- new_node.next = self .head .next
520
- self .head .next = new_node
514
+ new_node.next = self .dummy_head .next
515
+ self .dummy_head .next = new_node
521
516
self .size += 1
522
517
523
518
def addAtTail (self , val ):
@@ -526,7 +521,7 @@ class MyLinkedList(object):
526
521
:rtype: None
527
522
"""
528
523
new_node = Node(val)
529
- cur = self .head
524
+ cur = self .dummy_head
530
525
while (cur.next):
531
526
cur = cur.next
532
527
cur.next = new_node
@@ -548,12 +543,12 @@ class MyLinkedList(object):
548
543
return
549
544
550
545
node = Node(val)
551
- pre = self .head
546
+ cur = self .dummy_head
552
547
while (index):
553
- pre = pre .next
548
+ cur = cur .next
554
549
index -= 1
555
- node.next = pre .next
556
- pre .next = node
550
+ node.next = cur .next
551
+ cur .next = node
557
552
self .size += 1
558
553
559
554
def deleteAtIndex (self , index ):
@@ -563,7 +558,7 @@ class MyLinkedList(object):
563
558
"""
564
559
if index < 0 or index >= self .size:
565
560
return
566
- pre = self .head
561
+ pre = self .dummy_head
567
562
while (index):
568
563
pre = pre.next
569
564
index -= 1
@@ -574,11 +569,10 @@ class MyLinkedList(object):
574
569
# 相对于单链表, Node新增了prev属性
575
570
class Node :
576
571
577
- def __init__ (self , val ):
572
+ def __init__ (self , val = 0 , next = None , prev = None ):
578
573
self .val = val
579
- self .prev = None
580
- self .next = None
581
-
574
+ self .next = next
575
+ self .prev = prev
582
576
583
577
class MyLinkedList :
584
578
@@ -601,6 +595,20 @@ class MyLinkedList:
601
595
node = node.next
602
596
return node
603
597
598
+
599
+ def _update (self , prev : Node, next : Node, val : int ) -> None :
600
+ """
601
+ 更新节点
602
+ :param prev: 相对于更新的前一个节点
603
+ :param next: 相对于更新的后一个节点
604
+ :param val: 要添加的节点值
605
+ """
606
+ # 计数累加
607
+ self ._count += 1
608
+ node = Node(val)
609
+ prev.next, next .prev = node, node
610
+ node.prev, node.next = prev, next
611
+
604
612
def get (self , index : int ) -> int :
605
613
"""
606
614
Get the value of the index-th node in the linked list. If the index is invalid, return -1.
@@ -634,19 +642,6 @@ class MyLinkedList:
634
642
node = self ._get_node(index)
635
643
self ._update(node.prev, node, val)
636
644
637
- def _update (self , prev : Node, next : Node, val : int ) -> None :
638
- """
639
- 更新节点
640
- :param prev: 相对于更新的前一个节点
641
- :param next: 相对于更新的后一个节点
642
- :param val: 要添加的节点值
643
- """
644
- # 计数累加
645
- self ._count += 1
646
- node = Node(val)
647
- prev.next, next .prev = node, node
648
- node.prev, node.next = prev, next
649
-
650
645
def deleteAtIndex (self , index : int ) -> None :
651
646
"""
652
647
Delete the index-th node in the linked list, if the index is valid.
@@ -656,6 +651,16 @@ class MyLinkedList:
656
651
# 计数-1
657
652
self ._count -= 1
658
653
node.prev.next, node.next.prev = node.next, node.prev
654
+
655
+
656
+
657
+ # Your MyLinkedList object will be instantiated and called as such:
658
+ # obj = MyLinkedList()
659
+ # param_1 = obj.get(index)
660
+ # obj.addAtHead(val)
661
+ # obj.addAtTail(val)
662
+ # obj.addAtIndex(index,val)
663
+ # obj.deleteAtIndex(index)
659
664
```
660
665
661
666
Go:
0 commit comments