zoukankan      html  css  js  c++  java
  • Python 之简易单链表

    单链表的基本要素有 个,数据项和连接项。这两项在 Python 中可以通过对象及其属性来实现。

     

     1 class Node:
     2     def __init__ (self, data):
     3         self.data = data
     4         self.next = None
     5 
     6     def add (self, data):
     7         p = self
     8 
     9         while p.next != None:
    10             p = p.next
    11 
    12         p.next = Node (data)
    13 
    14     def subtract (self):
    15         p = self
    16 
    17         if p.next == None:
    18             print (r'Oh, I can't')
    19             return
    20 
    21         while p.next.next != None:
    22             p = p.next
    23 
    24         p.next = None 
    25 
    26     def show (self):
    27         p = self
    28 
    29         while p != None:
    30             print (p.data, end=' ')
    31             p = p.next
    32     

     

    >>> t = Node (1)
    >>> t.show ()
    1 
    >>> t.add (2)
    >>> t.show ()
    1 2 
    >>> t.subtract ()
    >>> t.show ()
    1 

    不过刚开始 add 是这样实现的:

    1 def add (self, data):
    2     p = self.next
    3 
    4     while p != None:
    5         p = p.next
    6 
    7     p = Node (data)

     

    最后测验无效,思考ing

    和 self 是什么关系?引用还是复制?

    查询了一下,Python 中一切变量皆是引用。(还有一句知名度较高:Python 中一切数据皆是对象)

    如果修改引用内容,分2种情况考虑:

      如果引用对象为不可变对象:

        创建新对象

      如果引用对象为可变对象:

        修改原对象

     

    而上面 add 失效,是因为 p = Node (data) 直接解了引用,而不是修改了原对象

     

    --data: 2015-05-25

     

  • 相关阅读:
    centos7安装ELS7.2.1
    简单搭建es环境并配置keyword检索
    拦截器执行顺序及查看方法
    JPA同时支持精准搜索和模糊搜索
    Vue开发之devtools
    Linux配置本地yum源
    Nginx编译安装
    VS2017 DUMP文件调试
    磁共振序列相关知识点记录
    C#高级编程笔记(一)
  • 原文地址:https://www.cnblogs.com/pycansi/p/4528318.html
Copyright © 2011-2022 走看看