【问题标题】:Which direction is this pointer heading to in this LinkedList?这个指针指向这个 LinkedList 中的哪个方向?
【发布时间】:2019-07-30 11:55:48
【问题描述】:

我不明白def insert_beginning(self, new_value) 的逻辑。我们希望将值 5 设为 self.head_node。不应该是 self.head_node.set_next_node(new_node) 产生 5 -> 70 -> 5675,而 new_node.set_next_node(self.head_node) 产生 5 self.head_node?

class Node:
  def __init__(self, value, next_node=None):
    self.value = value
    self.next_node = next_node

  def get_value(self):
    return self.value

  def get_next_node(self):
    return self.next_node

  def set_next_node(self, next_node):
    self.next_node = next_node

# Our LinkedList class
class LinkedList:
  def __init__(self, value=None):
    self.head_node = Node(value)

  def get_head_node(self):
    return self.head_node

  def insert_beginning(self, new_value):
    new_node = Node(new_value)
    new_node.set_next_node(self.head_node)
    self.head_node = new_node


# Test your code by uncommenting the statements below - did your list print to the terminal?
ll = LinkedList(5)
ll.insert_beginning(70)
ll.insert_beginning(5675)

【问题讨论】:

    标签: python python-3.x pointers linked-list nodes


    【解决方案1】:

    ll = LinkedList(5)创建一个有一个节点的链表,该节点也是头节点,它包含的值为5ll.insert_beginning(70),先新建一个节点,70,然后在它后面做旧的头,70->5,那么self.head_node = new_node所做的就是让链表的头成为这个新节点。

    简而言之,ll.insert_beginning(val)不断创建一个新节点,并让这个节点成为链表的头部。


    ll.insert_beginning(70)中对new_node.set_next_node(self.head_node)的解释:

    What ll = linkedlist(5) does:
      address(x201)
    -----------------
    |   5  | Null   |    -----> It's a node
    -----------------
    
    What ll.insert_beginning(70) does:
    
       x304
    -----------------
    |  70  | Null   |     ----> It's another node 
    -----------------
         x304                         x201
    -----------------           ----------------
    |  70  | x201   |     ----> |  5    |  Null |
    -----------------           -----------------
    

    【讨论】:

    • 你好,self.head_node 不应该是第一个指向其他节点而不是最后一个被指向的节点吗?
    • @SharonNg self.head_node 是头节点,后面是其他节点。
    • 所以不应该是 5 -> 70 而不是 5
    • @SharonNg 对。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2023-03-07
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多