欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

鏈表詳解(python實現)

系統 1797 0

一、 定義見百度百科鏈表

鏈表由表頭和節點組成,節點分為數據域和指針域,數據域中存貯數據元素,指針域存儲下個結點的地址

二、單鏈表實現邏輯

  1. 創建節點類Node和鏈表類Linklist,Linklist類中包含head屬性,head的值為0或Node對象,Node類中包含value屬性存儲數據,next屬性存儲下個節點的地址(Node對象)
  2. 循環節點從head開始取next屬性,直到next=0為止,返回當前對象
  3. 添加節點時調用循環方法返回最后一個節點對象,把返回節點的next改為當前Node對象,如當前沒有節點,則Linklist實例的head屬性修改為當前Node對象
  4. 刪除節點時把前一個節點的next屬性修改為后一個節點的Node對象,如果當前節點是最后一個對象

三、單鏈表代碼實現

            
              
                class
              
              
                Node
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
              value
              
                ,
              
              node 
              
                =
              
              
                0
              
              
                )
              
              
                :
              
              
        self
              
                .
              
              value 
              
                =
              
               value
        self
              
                .
              
              
                next
              
              
                =
              
               node


              
                class
              
              
                LinkList
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
               value
              
                =
              
              
                0
              
              
                ,
              
              
                *
              
              args
              
                )
              
              
                :
              
              
        self
              
                .
              
              lenth 
              
                =
              
              
                0
              
              
                #創建表頭head
              
              
        self
              
                .
              
              head 
              
                =
              
              
                0
              
              
                if
              
               value 
              
                ==
              
              
                0
              
              
                else
              
               Node
              
                (
              
              value
              
                )
              
              
                #如果初始化實例時傳入多個參數,循環加入鏈表
              
              
        p 
              
                =
              
               self
              
                .
              
              head
        
              
                for
              
               i 
              
                in
              
              
                [
              
              
                *
              
              args
              
                ]
              
              
                :
              
              
            node 
              
                =
              
               Node
              
                (
              
              i
              
                )
              
              
            p
              
                .
              
              
                next
              
              
                =
              
               node
            p 
              
                =
              
               p
              
                .
              
              
                next
              
              
                def
              
              
                append
              
              
                (
              
              self
              
                ,
              
              value
              
                )
              
              
                :
              
              
                if
              
               self
              
                .
              
              head 
              
                ==
              
              
                0
              
              
                :
              
              
            self
              
                .
              
              head 
              
                =
              
               Node
              
                (
              
              value
              
                )
              
              
                else
              
              
                :
              
                  
            self
              
                .
              
              iternodes
              
                (
              
              
                )
              
              
                .
              
              
                next
              
              
                =
              
               Node
              
                (
              
              value
              
                )
              
              
                def
              
              
                iternodes
              
              
                (
              
              self
              
                )
              
              
                :
              
              
        p 
              
                =
              
               self
              
                .
              
              head
        
              
                while
              
               p
              
                :
              
              
                print
              
              
                (
              
              p
              
                .
              
              value
              
                )
              
              
                if
              
              
                not
              
               p
              
                .
              
              
                next
              
              
                :
              
              
                return
              
               p
            p 
              
                =
              
               p
              
                .
              
              
                next
              
            
          

四、雙鏈表實現

  • 對比單鏈表,Node對象增加了before屬性記錄前一節點對象,同時增加insert、pop等方法
  • 利用python的特殊方法,把Linklist類構造成一個類似list的類,可以使用len()方法,可迭代
            
              
                #創建Node類
              
              
                class
              
              
                Node
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
               value
              
                ,
              
               before
              
                =
              
              
                0
              
              
                ,
              
               node
              
                =
              
              
                0
              
              
                )
              
              
                :
              
              
        self
              
                .
              
              value 
              
                =
              
               value
        self
              
                .
              
              
                next
              
              
                =
              
               node
        self
              
                .
              
              before 
              
                =
              
               before
        

              
                #創建鏈表類
              
              
                class
              
              
                LinkList
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
               value
              
                =
              
              
                0
              
              
                ,
              
              
                *
              
              args
              
                )
              
              
                :
              
              
        self
              
                .
              
              lenth 
              
                =
              
              
                0
              
              
                #創建表頭head
              
              
        self
              
                .
              
              head 
              
                =
              
              
                0
              
              
                if
              
               value 
              
                ==
              
              
                0
              
              
                else
              
               Node
              
                (
              
              value
              
                )
              
              
                #如果初始化實例時傳入多個參數,循環加入鏈表
              
              
                if
              
               self
              
                .
              
              head 
              
                !=
              
              
                0
              
              
                :
              
              
            self
              
                .
              
              lenth 
              
                +=
              
              
                1
              
              
            p 
              
                =
              
               self
              
                .
              
              head
            
              
                for
              
               i 
              
                in
              
              
                [
              
              
                *
              
              args
              
                ]
              
              
                :
              
              
                node 
              
                =
              
               Node
              
                (
              
              i
              
                )
              
              
                p
              
                .
              
              
                next
              
              
                =
              
               node
                node
              
                .
              
              before 
              
                =
              
               p
                p 
              
                =
              
               p
              
                .
              
              
                next
              
              
                self
              
                .
              
              lenth 
              
                +=
              
              
                1
              
              
                #append方法,判斷表頭是否為空,每次執行lenth屬性值+1
              
              
                def
              
              
                append
              
              
                (
              
              self
              
                ,
              
               value
              
                )
              
              
                :
              
              
                if
              
               self
              
                .
              
              head 
              
                ==
              
              
                0
              
              
                :
              
              
            self
              
                .
              
              head 
              
                =
              
               Node
              
                (
              
              value
              
                )
              
              
            self
              
                .
              
              lenth 
              
                +=
              
              
                1
              
              
                else
              
              
                :
              
              
            p 
              
                =
              
               Node
              
                (
              
              value
              
                )
              
              
            cur 
              
                =
              
               self
              
                .
              
              iternodes
              
                (
              
              
                )
              
              
            cur
              
                .
              
              
                next
              
              
                =
              
               p
            p
              
                .
              
              before 
              
                =
              
               cur
            self
              
                .
              
              lenth 
              
                +=
              
              
                1
              
              
                #insert方法(后插),是否表頭特殊處理,每次執行lenth屬性值+1
              
              
                def
              
              
                instert
              
              
                (
              
              self
              
                ,
              
               value
              
                ,
              
               index
              
                )
              
              
                :
              
              
                if
              
               self
              
                .
              
              head 
              
                ==
              
              
                0
              
              
                :
              
              
            self
              
                .
              
              append
              
                (
              
              value
              
                )
              
              
                else
              
              
                :
              
              
            p 
              
                =
              
               Node
              
                (
              
              value
              
                )
              
              
            prv 
              
                =
              
               self
              
                .
              
              iternodes
              
                (
              
              index
              
                )
              
              
                if
              
               prv
              
                .
              
              __dict__
              
                .
              
              get
              
                (
              
              
                'head'
              
              
                )
              
              
                :
              
              
                p
              
                .
              
              before 
              
                =
              
               prv
              
                .
              
              head
                prv
              
                .
              
              head
              
                .
              
              
                next
              
              
                =
              
               p
                
              
                if
              
               prv
              
                .
              
              head
              
                .
              
              
                next
              
              
                !=
              
              
                0
              
              
                :
              
              
                    prv
              
                .
              
              head
              
                .
              
              
                next
              
              
                .
              
              before 
              
                =
              
               p
                    p
              
                .
              
              
                next
              
              
                =
              
               prv
              
                .
              
              head
              
                .
              
              
                next
              
              
                else
              
              
                :
              
              
               
                p
              
                .
              
              before 
              
                =
              
               prv
                
              
                if
              
               prv
              
                .
              
              
                next
              
              
                !=
              
              
                0
              
              
                :
              
              
                    prv
              
                .
              
              
                next
              
              
                .
              
              before 
              
                =
              
               p
                p
              
                .
              
              
                next
              
              
                =
              
               prv
              
                .
              
              
                next
              
              
                prv
              
                .
              
              
                next
              
              
                =
              
               p
                
            self
              
                .
              
              lenth 
              
                +=
              
              
                1
              
              
                #遍歷方法,每次從表頭開始
              
              
                def
              
              
                iternodes
              
              
                (
              
              self
              
                ,
              
               index
              
                =
              
              
                None
              
              
                )
              
              
                :
              
              
                if
              
               index 
              
                is
              
              
                not
              
              
                None
              
              
                :
              
              
                if
              
               index 
              
                >
              
               self
              
                .
              
              lenth
              
                :
              
              
                raise
              
               Exception
              
                (
              
              
                "索引超界"
              
              
                )
              
              
            p 
              
                =
              
               self
              
                .
              
              head
            i 
              
                =
              
              
                0
              
              
                while
              
               p
              
                :
              
              
                if
              
               i 
              
                ==
              
               index
              
                :
              
              
                return
              
               p
                p 
              
                =
              
               p
              
                .
              
              
                next
              
              
                i 
              
                +=
              
              
                1
              
              
                else
              
              
                :
              
              
            p 
              
                =
              
               self
              
                .
              
              head
            
              
                while
              
               p
              
                :
              
              
                if
              
              
                not
              
               p
              
                .
              
              
                next
              
              
                :
              
              
                return
              
               p
                p 
              
                =
              
               p
              
                .
              
              
                next
              
              
                #刪除方法,刪除指定索引的值,表頭特殊處理,每次執行lenth屬性值-1
              
              
                def
              
              
                pop
              
              
                (
              
              self
              
                ,
              
               index
              
                =
              
              
                None
              
              
                )
              
              
                :
              
              
                if
              
               self
              
                .
              
              lenth 
              
                ==
              
              
                0
              
              
                :
              
              
                return
              
              
                'LinkList is empty'
              
              
                if
              
               index 
              
                is
              
              
                None
              
              
                :
              
              
                if
              
               self
              
                .
              
              lenth 
              
                ==
              
              
                1
              
              
                :
              
              
                self
              
                .
              
              head 
              
                =
              
              
                0
              
              
                self
              
                .
              
              lenth 
              
                -=
              
              
                1
              
              
                return
              
              
                if
              
               self
              
                .
              
              iternodes
              
                (
              
              
                )
              
              
                .
              
              before 
              
                ==
              
              
                0
              
              
                :
              
              
                self
              
                .
              
              iternodes
              
                (
              
              
                )
              
              
                .
              
              value 
              
                =
              
              
                0
              
              
                else
              
              
                :
              
              
                self
              
                .
              
              iternodes
              
                (
              
              
                )
              
              
                .
              
              before
              
                .
              
              
                next
              
              
                =
              
              
                0
              
              
                elif
              
               index 
              
                ==
              
              
                0
              
              
                :
              
              
                if
              
               self
              
                .
              
              iternodes
              
                (
              
              index
              
                )
              
              
                .
              
              
                next
              
              
                ==
              
              
                0
              
              
                :
              
              
                self
              
                .
              
              head 
              
                =
              
              
                0
              
              
                else
              
              
                :
              
              
                self
              
                .
              
              head
              
                .
              
              
                next
              
              
                .
              
              before 
              
                =
              
              
                0
              
              
                self
              
                .
              
              head 
              
                =
              
               self
              
                .
              
              head
              
                .
              
              
                next
              
              
                else
              
              
                :
              
              
            self
              
                .
              
              iternodes
              
                (
              
              index
              
                )
              
              
                .
              
              before
              
                .
              
              
                next
              
              
                =
              
               self
              
                .
              
              iternodes
              
                (
              
              index
              
                )
              
              
                .
              
              
                next
              
              
            self
              
                .
              
              iternodes
              
                (
              
              index
              
                )
              
              
                .
              
              
                next
              
              
                .
              
              before 
              
                =
              
               self
              
                .
              
              iternodes
              
                (
              
              index
              
                )
              
              
                .
              
              before
        self
              
                .
              
              lenth 
              
                -=
              
              
                1
              
              
                def
              
              
                __len__
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                return
              
               self
              
                .
              
              lenth

    
              
                def
              
              
                __iter__
              
              
                (
              
              self
              
                )
              
              
                :
              
              
                yield
              
              
                from
              
              
                (
              
              self
              
                .
              
              iternodes
              
                (
              
              i
              
                )
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              self
              
                .
              
              lenth
              
                )
              
              
                )
              
            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩av片在线免费观看 | 日韩特级毛片 | 欧美激情a∨在线视频播放 中文字幕亚洲图片 | 国产短视频精品区第一页 | 日本三级2020| 亚洲高清视频在线观看 | 亚洲九九 | 欧美精品午夜久久久伊人 | 91视频社区 | 久久久99精品久久久 | 欧美日韩在线第一页 | 天天色天天色 | 免费成人午夜视频 | 久久精品国产一区二区 | 精品a级片 | 久久青草国产免费观看 | 亚洲一级在线观看 | 无码免费人妻A片AAA毛 | 伦理午夜电影免费观看 | 99久久免费视频在线观看 | 婷婷色爱区综合五月激情韩国 | 六月丁香综合 | 久久97精品久久久久久久看片 | 国产色在线 | 成人免费视频 | 成人午夜精品久久久久久久小说 | 日本精品一区二区三区在线 | 久久电影精品久久99久久 | 日本三级香港三级人妇99 | 精品久久洲久久久久护士 | 狠久久| 国产在线91精品入口首页 | 日本一级大毛片a一 | 国产高潮久久精品AV无码 | 国产99久久亚洲综合精品 | 国产成人亚洲综合a∨婷婷 91亚洲精品一区二区福利 | 那一个欧美一级毛片 | 一级色毛片 | 国产成人一区二区三区电影 | 欧美国产日韩在线观看 | 日韩在线观看视频一区二区三区 |