最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python單向循環(huán)鏈表實(shí)例詳解

 更新時(shí)間:2022年05月25日 11:11:51   作者:python-行者  
這篇文章主要為大家詳細(xì)介紹了python單向循環(huán)鏈表實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

使用python實(shí)現(xiàn)單向循環(huán)鏈表,供大家參考,具體內(nèi)容如下

單向循環(huán)鏈表

將所有的鏈接在一起,每一個(gè)節(jié)點(diǎn)分為數(shù)據(jù)存儲區(qū)和鏈接區(qū),數(shù)據(jù)區(qū)存儲數(shù)據(jù),鏈接區(qū)鏈接下一個(gè)節(jié)點(diǎn)

item: 存儲數(shù)據(jù)的地方
next: 鏈接下一個(gè)節(jié)點(diǎn)
注意: 單向循環(huán)鏈表是首位鏈接,即尾部的節(jié)點(diǎn)要和頭部的節(jié)點(diǎn)鏈接

單向鏈表操作

1、鏈表是否為空
2、鏈表的長度
3、遍歷鏈表
4、鏈表頭部添加元素
5、鏈表尾部添加元素
6、鏈表指定位置添加元素
7、鏈表刪除節(jié)點(diǎn)
8、查找節(jié)點(diǎn)是否存在

代碼實(shí)現(xiàn)

# Functions ?函數(shù)聲明
class Node():
? ? """實(shí)例化節(jié)點(diǎn)類"""
? ? def __init__(self, item):
? ? ? ? self.item = item
? ? ? ? self.next = None

class Linklist():
? ? """
? ? 存放節(jié)點(diǎn)類
? ? """
? ? def __init__(self):
? ? ? ? self.head = None

? ? # 1. 鏈表是否為空
? ? def is_empty(self):
? ? ? ? return self.head == None

? ? # 2. 鏈表的長度
? ? def length(self):
? ? ? ? """
? ? ? ? 返回鏈表的長度
? ? ? ? 遍歷所有的節(jié)點(diǎn),使用計(jì)數(shù)器計(jì)數(shù)
? ? ? ? 1、鏈表為空情況
? ? ? ? """
? ? ? ? # 實(shí)例化節(jié)點(diǎn)
? ? ? ? cur = self.head
? ? ? ? if self.is_empty():
? ? ? ? ? ? return 0
? ? ? ? else:
? ? ? ? ? ? # 計(jì)數(shù)
? ? ? ? ? ? count = 1
? ? ? ? ? ? # 遍歷鏈表
? ? ? ? ? ? while cur.next != self.head:
? ? ? ? ? ? ? ? count+=1
? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? return count

? ? # 3. 遍歷鏈表
? ? def travel(self):
? ? ? ? """
? ? ? ? 遍歷鏈表,獲取所有的數(shù)據(jù)
? ? ? ? 實(shí)例游標(biāo),遍歷數(shù)據(jù),輸出數(shù)據(jù)
? ? ? ? 1、 空鏈表情況
? ? ? ? 2、 只有頭部節(jié)點(diǎn)情況
? ? ? ? 3、 只有尾部節(jié)點(diǎn)情況
? ? ? ? """
? ? ? ? # 實(shí)例化游標(biāo)
? ? ? ? cur = self.head
? ? ? ? if self.is_empty():
? ? ? ? ? ? return None
? ? ? ? else:
? ? ? ? ? ? # 遍歷數(shù)據(jù)
? ? ? ? ? ? while cur.next != self.head:
? ? ? ? ? ? ? ? print(cur.item, end=' ')
? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? # 最后一個(gè)節(jié)點(diǎn)要單獨(dú)輸出
? ? ? ? ? ? print(cur.item)

? ? # 4. 鏈表頭部添加元素
? ? def add(self, item):
? ? ? ? """
? ? ? ? 往鏈表頭部添加數(shù)據(jù)
? ? ? ? 分析
? ? ? ? 鏈表為空
? ? ? ? ? ? self.head 直接指向node, 再講node指向自己
? ? ? ? 鏈表不為空
? ? ? ? ? ? node.next = self.head
? ? ? ? """
? ? ? ? # 實(shí)例化游標(biāo)
? ? ? ? cur = self.head
? ? ? ? # 實(shí)例化節(jié)點(diǎn)
? ? ? ? node = Node(item)
? ? ? ? # 判斷是否為空
? ? ? ? if self.is_empty():
? ? ? ? ? ? self.head = node
? ? ? ? ? ? node.next = node
? ? ? ? else:
? ? ? ? ? ? # 不為空的情況
? ? ? ? ? ? # 要將最后一個(gè)節(jié)點(diǎn)指向node
? ? ? ? ? ? while cur.next != self.head:
? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? node.next = self.head
? ? ? ? ? ? self.head = node
? ? ? ? ? ? cur.next = node

? ? # 5. 鏈表尾部添加元素
? ? def append(self, item):
? ? ? ? """
? ? ? ? 往尾部添加數(shù)據(jù)
? ? ? ? 分析
? ? ? ? 實(shí)例化節(jié)點(diǎn),再實(shí)例化游標(biāo)先指向最后一個(gè)節(jié)點(diǎn)
? ? ? ? 調(diào)換指向
? ? ? ? 1、空鏈表情況
? ? ? ? 2、只有一個(gè)鏈表情況

? ? ? ? """
? ? ? ? # 實(shí)例化節(jié)點(diǎn)
? ? ? ? node = Node(item)
? ? ? ? # 實(shí)例化游標(biāo)
? ? ? ? cur = self.head
? ? ? ? # 判斷是否為空
? ? ? ? if self.is_empty():
? ? ? ? ? ? self.add(item)
? ? ? ? else:
? ? ? ? ? ? # 不為空的情況,移動(dòng)游標(biāo)指向最后一個(gè)節(jié)點(diǎn)
? ? ? ? ? ? while cur.next != self.head:
? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? node.next = self.head
? ? ? ? ? ? cur.next = node
? ? ? ? ? ? pass

? ? # 6. 鏈表指定位置添加元素
? ? def insert(self, index, item):
? ? ? ? """
? ? ? ? 指定位置添加數(shù)據(jù)
? ? ? ? 實(shí)例化節(jié)點(diǎn), 實(shí)例化游標(biāo)指向索引的數(shù)據(jù),更改指向
? ? ? ? 位置大小
? ? ? ? 鏈表是否為空

? ? ? ? """
? ? ? ? # 實(shí)例化節(jié)點(diǎn)
? ? ? ? node = Node(item)
? ? ? ? # 實(shí)例化游標(biāo)
? ? ? ? cur = self.head
? ? ? ? if index <=0:
? ? ? ? ? ? self.add(item)
? ? ? ? elif index > (self.length()-1):
? ? ? ? ? ? self.append(item)
? ? ? ? else:
? ? ? ? ? ? # 判斷鏈表是否為空
? ? ? ? ? ? if self.is_empty():
? ? ? ? ? ? ? ? self.add(item)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? # 移動(dòng)游標(biāo),指向指定的索引位置
? ? ? ? ? ? ? ? count = 0
? ? ? ? ? ? ? ? while count < index-1:
? ? ? ? ? ? ? ? ? ? count+=1
? ? ? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? ? ? node.next = cur.next
? ? ? ? ? ? ? ? cur.next = node
? ? ? ? ? ? pass

? ? # 7. 鏈表刪除節(jié)點(diǎn)
? ? def remove(self, item):
? ? ? ? """
? ? ? ? 刪除指定的節(jié)點(diǎn)
? ? ? ? 實(shí)例化游標(biāo),遍歷鏈表插件這個(gè)節(jié)點(diǎn)是否存在,存在則更改指向
? ? ? ? 不存在,則不修改
? ? ? ? 空鏈表情況
? ? ? ? 頭節(jié)點(diǎn)情況
? ? ? ? 尾結(jié)點(diǎn)情況
? ? ? ? """
? ? ? ? # 實(shí)例化游標(biāo)
? ? ? ? cur = self.head
? ? ? ? if self.is_empty():
? ? ? ? ? ? return None
? ? ? ? else:
? ? ? ? ? ? # 不為空,遍歷鏈表,對比數(shù)據(jù)是否相等
? ? ? ? ? ? # 如果頭節(jié)點(diǎn)是要?jiǎng)h除的數(shù)據(jù)
? ? ? ? ? ? if cur.item == item:
? ? ? ? ? ? ? ? self.head=cur.next
? ? ? ? ? ? ? ? # 找出最后的節(jié)點(diǎn),將最后的節(jié)點(diǎn)指向,刪除后面的那個(gè)節(jié)點(diǎn)
? ? ? ? ? ? ? ? while cur.next != self.head:
? ? ? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? ? ? cur.next = cur.next
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? pro = None
? ? ? ? ? ? ? ? while cur.next != self.head:
? ? ? ? ? ? ? ? ? ? if cur.item == item:
? ? ? ? ? ? ? ? ? ? ? ? if cur.item == item:
? ? ? ? ? ? ? ? ? ? ? ? ? ? pro.next = cur.next
? ? ? ? ? ? ? ? ? ? ? ? ? ? return True
? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? pro = cur
? ? ? ? ? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? ? ? if cur.item == item:
? ? ? ? ? ? ? ? ? ? pro.next = self.head
? ? ? ? ? ? pass

? ? # 8. 查找節(jié)點(diǎn)是否存在
? ? def search(self, item):
? ? ? ? """
? ? ? ? 查找該節(jié)點(diǎn)是否存在
? ? ? ? 實(shí)例化游標(biāo),遍歷所有的節(jié)點(diǎn)
? ? ? ? 查看當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)是否和item 相等
? ? ? ? 空鏈表
? ? ? ? 頭節(jié)點(diǎn)
? ? ? ? 尾結(jié)點(diǎn)
? ? ? ? """
? ? ? ? # 實(shí)例化游標(biāo)
? ? ? ? cur = self.head
? ? ? ? # 判斷空鏈表
? ? ? ? if self.is_empty():
? ? ? ? ? ? return None
? ? ? ? else:
? ? ? ? ? ? # 不為空遍歷整個(gè)鏈表
? ? ? ? ? ? if cur.item == item:
? ? ? ? ? ? ? ? return True
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? while cur.next != self.head:
? ? ? ? ? ? ? ? ? ? if cur.item == item:
? ? ? ? ? ? ? ? ? ? ? ? return True
? ? ? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? ? ? cur = cur.next
? ? ? ? ? ? ? ? if cur.item == item:
? ? ? ? ? ? ? ? ? ? return True
? ? ? ? ? ? pass

測試運(yùn)行

# 程序的入口
if __name__ == "__main__":
? ? a = Linklist()
? ? a.add(400)
? ? a.add(300)
? ? a.add(200)
? ? a.add(100)
? ? # a.append(10)
? ? a.insert(4,6)
? ? # a.remove(6)
? ? print(a.length()) ?# 5
? ? a.travel() ? ? ? ? # 100 200 300 400 6
? ? print(a.search(100)) # True
? ? pass

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python異常處理中容易犯得錯(cuò)誤總結(jié)

    Python異常處理中容易犯得錯(cuò)誤總結(jié)

    本文整理了python異常處理中finally的兩個(gè)容易犯的錯(cuò)誤,適合新手朋友的學(xué)習(xí),感興趣的朋友可以參考下
    2021-06-06
  • wxpython繪制圓角窗體

    wxpython繪制圓角窗體

    這篇文章主要為大家詳細(xì)介紹了wxpython繪制圓角窗體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python實(shí)現(xiàn)基于socket的udp傳輸與接收功能詳解

    Python實(shí)現(xiàn)基于socket的udp傳輸與接收功能詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)基于socket的udp傳輸與接收功能,結(jié)合實(shí)例形式詳細(xì)分析了Python使用socket進(jìn)行udp文件傳輸與接收相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • 解析python 類方法、對象方法、靜態(tài)方法

    解析python 類方法、對象方法、靜態(tài)方法

    這篇文章主要介紹了解析python 類方法、對象方法、靜態(tài)方法的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • python怎么自定義捕獲錯(cuò)誤

    python怎么自定義捕獲錯(cuò)誤

    在本篇文章里小編給大家分享了關(guān)于python自定義捕獲錯(cuò)誤的方法,需要的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • 詳解如何使用Plotly和Dash進(jìn)行數(shù)據(jù)可視化

    詳解如何使用Plotly和Dash進(jìn)行數(shù)據(jù)可視化

    數(shù)據(jù)可視化是數(shù)據(jù)分析中至關(guān)重要的一環(huán),它能夠幫助我們更直觀地理解數(shù)據(jù)并發(fā)現(xiàn)隱藏的模式和趨勢,本文將介紹如何使用Plotly和Dash進(jìn)行數(shù)據(jù)可視化,感興趣的可以了解下
    2024-04-04
  • Python爬取門戶論壇評論淺談Python未來發(fā)展方向

    Python爬取門戶論壇評論淺談Python未來發(fā)展方向

    這篇文章主要介紹了如何實(shí)現(xiàn)Python爬取門戶論壇評論,附含圖片示例代碼,講解了詳細(xì)的操作過程,有需要的的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09
  • Python Pickling 和 Unpickling 的區(qū)別

    Python Pickling 和 Unpickling 的區(qū)別

    Python中的Pickling和Unpickling是與數(shù)據(jù)序列化和反序列化相關(guān)的重要概念,本文主要介紹了Python Pickling和Unpickling的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 使用Python在Word中查找并高亮指定文本

    使用Python在Word中查找并高亮指定文本

    當(dāng)你需要在長文檔或報(bào)告中快速找到特定的關(guān)鍵詞或短語,Word中提供的查找并高亮這一功能可以幫助你迅速定位這些內(nèi)容,本文將介紹如何使用Python在Word中查找并突出顯示指定的文本,需要的朋友可以參考下
    2024-03-03
  • 卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明

    卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明

    這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展及各模型的優(yōu)缺點(diǎn)及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評論

嘉义县| 海城市| 新泰市| 宝清县| 湛江市| 岳阳县| 黄梅县| 都安| 淄博市| 信丰县| 张北县| 二手房| 永善县| 凤阳县| 玉田县| 桂平市| 建昌县| 威信县| 东海县| 屏山县| 大田县| 昂仁县| 滦平县| 余干县| 哈巴河县| 高清| 北流市| 吉木萨尔县| 呈贡县| 泽州县| 莲花县| 天祝| 大足县| 合水县| 郯城县| 元阳县| 娱乐| 黑山县| 耒阳市| 益阳市| 常宁市|