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

Python實現(xiàn)的單向循環(huán)鏈表功能示例

 更新時間:2017年11月10日 12:04:41   作者:Erick-LONG  
這篇文章主要介紹了Python實現(xiàn)的單向循環(huán)鏈表功能,簡單描述了單向循環(huán)鏈表的概念、原理并結(jié)合實例形式分析了Python定義與使用單向循環(huán)鏈表的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)的單向循環(huán)鏈表功能。分享給大家供大家參考,具體如下:

概述:

單向循環(huán)鏈表是指在單鏈表的基礎(chǔ)上,表的最后一個元素指向鏈表頭結(jié)點,不再是為空。

由圖可知,單向循環(huán)鏈表的判斷條件不再是表為空了,而變成了是否到表頭。

操作

is_empty() 判斷鏈表是否為空
length() 返回鏈表的長度
travel() 遍歷
add(item) 在頭部添加一個節(jié)點
append(item) 在尾部添加一個節(jié)點
insert(pos, item) 在指定位置pos添加節(jié)點
remove(item) 刪除一個節(jié)點
search(item) 查找節(jié)點是否存在

具體代碼:

class Node(object):
  """節(jié)點"""
  def __init__(self, item):
    self.item = item
    self.next = None
class SinCycLinkedlist(object):
  """單向循環(huán)鏈表"""
  def __init__(self):
    self._head = None
  def is_empty(self):
    """判斷鏈表是否為空"""
    return self._head == None
  def length(self):
    """返回鏈表的長度"""
    # 如果鏈表為空,返回長度0
    if self.is_empty():
      return 0
    count = 1
    cur = self._head
    while cur.next != self._head:
      count += 1
      cur = cur.next
    return count
  def travel(self):
    """遍歷鏈表"""
    if self.is_empty():
      return
    cur = self._head
    print cur.item,
    while cur.next != self._head:
      cur = cur.next
      print cur.item,
    print ""
  def add(self, item):
    """頭部添加節(jié)點"""
    node = Node(item)
    if self.is_empty():
      self._head = node
      node.next = self._head
    else:
      #添加的節(jié)點指向_head
      node.next = self._head
      # 移到鏈表尾部,將尾部節(jié)點的next指向node
      cur = self._head
      while cur.next != self._head:
        cur = cur.next
      cur.next = node
      #_head指向添加node的
      self._head = node
  def append(self, item):
    """尾部添加節(jié)點"""
    node = Node(item)
    if self.is_empty():
      self._head = node
      node.next = self._head
    else:
      # 移到鏈表尾部
      cur = self._head
      while cur.next != self._head:
        cur = cur.next
      # 將尾節(jié)點指向node
      cur.next = node
      # 將node指向頭節(jié)點_head
      node.next = self._head
  def insert(self, pos, item):
    """在指定位置添加節(jié)點"""
    if pos <= 0:
      self.add(item)
    elif pos > (self.length()-1):
      self.append(item)
    else:
      node = Node(item)
      cur = self._head
      count = 0
      # 移動到指定位置的前一個位置
      while count < (pos-1):
        count += 1
        cur = cur.next
      node.next = cur.next
      cur.next = node
  def remove(self, item):
    """刪除一個節(jié)點"""
    # 若鏈表為空,則直接返回
    if self.is_empty():
      return
    # 將cur指向頭節(jié)點
    cur = self._head
    pre = None
    # 若頭節(jié)點的元素就是要查找的元素item
    if cur.item == item:
      # 如果鏈表不止一個節(jié)點
      if cur.next != self._head:
        # 先找到尾節(jié)點,將尾節(jié)點的next指向第二個節(jié)點
        while cur.next != self._head:
          cur = cur.next
        # cur指向了尾節(jié)點
        cur.next = self._head.next
        self._head = self._head.next
      else:
        # 鏈表只有一個節(jié)點
        self._head = None
    else:
      pre = self._head
      # 第一個節(jié)點不是要刪除的
      while cur.next != self._head:
        # 找到了要刪除的元素
        if cur.item == item:
          # 刪除
          pre.next = cur.next
          return
        else:
          pre = cur
          cur = cur.next
      # cur 指向尾節(jié)點
      if cur.item == item:
        # 尾部刪除
        pre.next = cur.next
  def search(self, item):
    """查找節(jié)點是否存在"""
    if self.is_empty():
      return False
    cur = self._head
    if cur.item == item:
      return True
    while cur.next != self._head:
      cur = cur.next
      if cur.item == item:
        return True
    return False
if __name__ == "__main__":
  ll = SinCycLinkedlist()
  ll.add(1)
  ll.add(2)
  ll.append(3)
  ll.insert(2, 4)
  ll.insert(4, 5)
  ll.insert(0, 6)
  print "length:",ll.length()
  ll.travel()
  print ll.search(3)
  print ll.search(7)
  ll.remove(1)
  print "length:",ll.length()
  ll.travel()

運(yùn)行結(jié)果:

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python加密解密算法與技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • 使用Python的OpenCV模塊識別滑動驗證碼的缺口(推薦)

    使用Python的OpenCV模塊識別滑動驗證碼的缺口(推薦)

    這篇文章主要介紹了使用Python的OpenCV模塊識別滑動驗證碼的缺口,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • python用循環(huán)新建多個列表的代碼實例

    python用循環(huán)新建多個列表的代碼實例

    當(dāng)我們處理數(shù)據(jù)時,有時候需要創(chuàng)建多個列表以存儲不同類型或不同條件下的數(shù)據(jù),在Python中,我們可以利用循環(huán)來快速、高效地創(chuàng)建這些列表,本文將介紹如何使用循環(huán)在Python中創(chuàng)建多個列表,并提供代碼實例,需要的朋友可以參考下
    2024-04-04
  • 樹莓派與PC端在局域網(wǎng)內(nèi)運(yùn)用python實現(xiàn)即時通訊

    樹莓派與PC端在局域網(wǎng)內(nèi)運(yùn)用python實現(xiàn)即時通訊

    這篇文章主要為大家詳細(xì)介紹了樹莓派與PC端在局域網(wǎng)內(nèi)運(yùn)用python實現(xiàn)即時通訊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python小程序之4名牌手洗牌發(fā)牌問題解析

    python小程序之4名牌手洗牌發(fā)牌問題解析

    這篇文章主要為大家詳細(xì)介紹了python小程序之4名牌手洗牌發(fā)牌問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Python dict和defaultdict使用實例解析

    Python dict和defaultdict使用實例解析

    這篇文章主要介紹了Python dict和defaultdict使用實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python裝飾器使用你可能不知道的幾種姿勢

    Python裝飾器使用你可能不知道的幾種姿勢

    這篇文章主要給大家介紹了關(guān)于Python裝飾器使用你可能不知道的幾種姿勢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python基礎(chǔ)之高級變量類型實例詳解

    Python基礎(chǔ)之高級變量類型實例詳解

    這篇文章主要介紹了Python基礎(chǔ)之高級變量類型,結(jié)合實例形式詳細(xì)分析了Python元組、字典、字符串、公共方法以及遍歷、切片等常見操作技巧,需要的朋友可以參考下
    2020-01-01
  • 分析python切片原理和方法

    分析python切片原理和方法

    這篇文章主要通過代碼實例給大家詳細(xì)介紹了python切片原理和方法,有興趣的朋友跟著學(xué)習(xí)下吧。
    2017-12-12
  • python opencv實現(xiàn)信用卡的數(shù)字識別

    python opencv實現(xiàn)信用卡的數(shù)字識別

    這篇文章主要介紹了python opencv實現(xiàn)信用卡的數(shù)字識別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 使用Python批量連接華為網(wǎng)絡(luò)設(shè)備的操作步驟

    使用Python批量連接華為網(wǎng)絡(luò)設(shè)備的操作步驟

    隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大和設(shè)備數(shù)量的增加,手動配置和管理每臺網(wǎng)絡(luò)設(shè)備變得越來越不現(xiàn)實,因此,自動化工具和腳本變得尤為重要,本篇文章將詳細(xì)介紹如何使用Python批量連接華為網(wǎng)絡(luò)設(shè)備,實現(xiàn)自動化配置和管理,需要的朋友可以參考下
    2024-06-06

最新評論

平泉县| 丰都县| 宣武区| 安康市| 伊吾县| 乌兰浩特市| 淳化县| 济阳县| 巴塘县| 岐山县| 婺源县| 曲阜市| 东平县| 辽阳市| 文成县| 友谊县| 锡林郭勒盟| 开封县| 普兰店市| 怀仁县| 九寨沟县| 临汾市| 乌什县| 丽水市| 油尖旺区| 株洲市| 宁强县| 岑溪市| 泰兴市| 英德市| 汉中市| 盱眙县| 舞钢市| 永宁县| 乐陵市| 塘沽区| 中牟县| 延安市| 雷波县| 云浮市| 东山县|