Skip to content

Commit f7e280e

Browse files
Merge pull request youngyangyang04#2044 from jianghongcheng/master
Update 0707.设计链表.md
2 parents 4543aa4 + f7bdc58 commit f7e280e

File tree

1 file changed

+38
-33
lines changed

1 file changed

+38
-33
lines changed

problems/0707.设计链表.md

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -486,15 +486,10 @@ class MyLinkedList {
486486
Python:
487487
```python
488488
# 单链表
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:
495490

496491
def __init__(self):
497-
self.head = Node()
492+
self.dummy_head = Node()# 添加虚拟头指针,便于操作
498493
self.size = 0 # 设置一个链表长度的属性,便于后续操作,注意每次增和删的时候都要更新
499494

500495
def get(self, index):
@@ -504,7 +499,7 @@ class MyLinkedList(object):
504499
"""
505500
if index < 0 or index >= self.size:
506501
return -1
507-
cur = self.head.next
502+
cur = self.dummy_head.next
508503
while(index):
509504
cur = cur.next
510505
index -= 1
@@ -516,8 +511,8 @@ class MyLinkedList(object):
516511
:rtype: None
517512
"""
518513
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
521516
self.size += 1
522517

523518
def addAtTail(self, val):
@@ -526,7 +521,7 @@ class MyLinkedList(object):
526521
:rtype: None
527522
"""
528523
new_node = Node(val)
529-
cur = self.head
524+
cur = self.dummy_head
530525
while(cur.next):
531526
cur = cur.next
532527
cur.next = new_node
@@ -548,12 +543,12 @@ class MyLinkedList(object):
548543
return
549544

550545
node = Node(val)
551-
pre = self.head
546+
cur = self.dummy_head
552547
while(index):
553-
pre = pre.next
548+
cur = cur.next
554549
index -= 1
555-
node.next = pre.next
556-
pre.next = node
550+
node.next = cur.next
551+
cur.next = node
557552
self.size += 1
558553

559554
def deleteAtIndex(self, index):
@@ -563,7 +558,7 @@ class MyLinkedList(object):
563558
"""
564559
if index < 0 or index >= self.size:
565560
return
566-
pre = self.head
561+
pre = self.dummy_head
567562
while(index):
568563
pre = pre.next
569564
index -= 1
@@ -574,11 +569,10 @@ class MyLinkedList(object):
574569
# 相对于单链表, Node新增了prev属性
575570
class Node:
576571

577-
def __init__(self, val):
572+
def __init__(self, val=0, next = None, prev = None):
578573
self.val = val
579-
self.prev = None
580-
self.next = None
581-
574+
self.next = next
575+
self.prev = prev
582576

583577
class MyLinkedList:
584578

@@ -601,6 +595,20 @@ class MyLinkedList:
601595
node = node.next
602596
return node
603597

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+
604612
def get(self, index: int) -> int:
605613
"""
606614
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:
634642
node = self._get_node(index)
635643
self._update(node.prev, node, val)
636644

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-
650645
def deleteAtIndex(self, index: int) -> None:
651646
"""
652647
Delete the index-th node in the linked list, if the index is valid.
@@ -656,6 +651,16 @@ class MyLinkedList:
656651
# 计数-1
657652
self._count -= 1
658653
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)
659664
```
660665

661666
Go:

0 commit comments

Comments
 (0)