欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python雙向鏈表實現(xiàn)實例代碼

 更新時間:2013年11月21日 14:20:34   作者:  
python雙向鏈表和單鏈表類似,只不過是增加了一個指向前面一個元素的指針,下面的代碼實例了python雙向鏈表的方法

示意圖:

python雙向鏈表實現(xiàn)代碼

復制代碼 代碼如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

class Node(object):
    def __init__(self,val,p=0):
        self.data = val
        self.next = p
        self.prev = p

class LinkList(object):
    def __init__(self):
        self.head = 0

    def __getitem__(self, key):

        if self.is_empty():
            print 'linklist is empty.'
            return

        elif key <0  or key > self.getlength():
            print 'the given key is error'
            return

        else:
            return self.getitem(key)

 

    def __setitem__(self, key, value):

        if self.is_empty():
            print 'linklist is empty.'
            return

        elif key <0  or key > self.getlength():
            print 'the given key is error'
            return

        else:
            self.delete(key)
            return self.insert(key)

    def initlist(self,data):

        self.head = Node(data[0])

        p = self.head

        for i in data[1:]:
            node = Node(i)
            p.next = node
            node.prev  = p
            p = p.next

    def getlength(self):

        p =  self.head
        length = 0
        while p!=0:
            length+=1
            p = p.next

        return length

    def is_empty(self):

        if self.getlength() ==0:
            return True
        else:
            return False

    def clear(self):

        self.head = 0


    def append(self,item):

        q = Node(item)
        if self.head ==0:
            self.head = q
        else:
            p = self.head
            while p.next!=0:
                p = p.next
            p.next = q
            q.prev = p


    def getitem(self,index):

        if self.is_empty():
            print 'Linklist is empty.'
            return
        j = 0
        p = self.head

        while p.next!=0 and j <index:
            p = p.next
            j+=1

        if j ==index:
            return p.data

        else:

            print 'target is not exist!'

    def insert(self,index,item):

        if self.is_empty() or index<0 or index >self.getlength():
            print 'Linklist is empty.'
            return

        if index ==0:
            q = Node(item,self.head)

            self.head = q

        p = self.head
        post  = self.head
        j = 0
        while p.next!=0 and j<index:
            post = p
            p = p.next
            j+=1

        if index ==j:
            q = Node(item,p)
            post.next = q
            q.prev = post
            q.next = p
            p.prev = q


    def delete(self,index):

        if self.is_empty() or index<0 or index >self.getlength():
            print 'Linklist is empty.'
            return

        if index ==0:
            q = Node(item,self.head)

            self.head = q

        p = self.head
        post  = self.head
        j = 0
        while p.next!=0 and j<index:
            post = p
            p = p.next
            j+=1

        if index ==j:
            post.next = p.next
            p.next.prev = post

    def index(self,value):

        if self.is_empty():
            print 'Linklist is empty.'
            return

        p = self.head
        i = 0
        while p.next!=0 and not p.data ==value:
            p = p.next
            i+=1

        if p.data == value:
            return i
        else:
            return -1


l = LinkList()
l.initlist([1,2,3,4,5])
print l.getitem(4)
l.append(6)
print l.getitem(5)

l.insert(4,40)
print l.getitem(3)
print l.getitem(4)
print l.getitem(5)

l.delete(5)
print l.getitem(5)

l.index(5)

結(jié)果為;

5
6
4
40
5
6

和單鏈表結(jié)果一樣。

相關(guān)文章

  • Python數(shù)據(jù)清洗之利用pandas篩選數(shù)據(jù)詳解

    Python數(shù)據(jù)清洗之利用pandas篩選數(shù)據(jù)詳解

    這篇文章主要介紹了Python數(shù)據(jù)清洗之利用pandas篩選數(shù)據(jù)詳解,Pandas是一個用于數(shù)據(jù)分析和處理的Python庫,它提供了高效的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,使得數(shù)據(jù)的清洗、轉(zhuǎn)換、分析和可視化變得更加容易和靈活,需要的朋友可以參考下
    2023-08-08
  • Python如何為圖片添加水印

    Python如何為圖片添加水印

    這篇文章主要介紹了Python如何使用Python-Pillow庫給圖片添加水印的方法,非常的簡單實用,有需要的小伙伴可以參考下
    2016-11-11
  • 如何用用Python制作NFT區(qū)塊鏈作品

    如何用用Python制作NFT區(qū)塊鏈作品

    在本文中,我們將學習如何使用 Brownie、Python 和 Chainlink 來制作非同質(zhì)化的 NFT 作品,并在 OpenSea NFT 市場上展示和銷售我們的成果。
    2021-06-06
  • 詳解Python文本操作相關(guān)模塊

    詳解Python文本操作相關(guān)模塊

    這篇文章主要介紹了詳解Python文本操作相關(guān)模塊的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Python、PyCharm安裝及使用方法(Mac版)詳解

    Python、PyCharm安裝及使用方法(Mac版)詳解

    這篇文章主要為大家詳細介紹了Mac版的Python、PyCharm安裝及使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 如何在Anaconda中打開python自帶idle

    如何在Anaconda中打開python自帶idle

    這篇文章主要介紹了如何在Anaconda中打開python自帶idle,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Python?pandas找出、刪除重復的數(shù)據(jù)實例

    Python?pandas找出、刪除重復的數(shù)據(jù)實例

    在面試中很可能遇到給定一個含有重復元素的列表,刪除其中重復的元素,下面這篇文章主要給大家介紹了關(guān)于Python?pandas找出、刪除重復數(shù)據(jù)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Django解決無法從request.POST中獲取URL傳進來的參數(shù)

    Django解決無法從request.POST中獲取URL傳進來的參數(shù)

    這篇文章主要介紹了Django解決無法從request.POST中獲取URL傳進來的參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Python 支持向量機分類器的實現(xiàn)

    Python 支持向量機分類器的實現(xiàn)

    這篇文章主要介紹了Python 支持向量機分類器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • Python代碼實現(xiàn)http/https代理服務(wù)器的腳本

    Python代碼實現(xiàn)http/https代理服務(wù)器的腳本

    這篇文章主要介紹了Python代碼做出http/https代理服務(wù)器,啟動即可做http https透明代理使用,通過幾百行代碼做出http/https代理服務(wù)器代碼片段,需要的朋友可以參考下
    2019-08-08

最新評論