Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /