亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實現(xiàn)的數(shù)據(jù)結構與算法之隊列詳解

 更新時間:2015年04月22日 14:24:05   作者:RussellLuo  
這篇文章主要介紹了Python實現(xiàn)的數(shù)據(jù)結構與算法之隊列,詳細分析了隊列的定義、功能與Python實現(xiàn)隊列的相關技巧,以及具體的用法,需要的朋友可以參考下

本文實例講述了Python實現(xiàn)的數(shù)據(jù)結構與算法之隊列。分享給大家供大家參考。具體分析如下:

一、概述

隊列(Queue)是一種先進先出(FIFO)的線性數(shù)據(jù)結構,插入操作在隊尾(rear)進行,刪除操作在隊首(front)進行。

二、ADT

隊列ADT(抽象數(shù)據(jù)類型)一般提供以下接口:

① Queue() 創(chuàng)建隊列
② enqueue(item) 向隊尾插入項
③ dequeue() 返回隊首的項,并從隊列中刪除該項
④ empty() 判斷隊列是否為空
⑤ size() 返回隊列中項的個數(shù)

隊列操作的示意圖如下:

三、Python實現(xiàn)

使用Python的內(nèi)建類型list列表,可以很方便地實現(xiàn)隊列ADT:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Queue:
  def __init__(self):
    self.items = []
  def enqueue(self, item):
    self.items.append(item)
  def dequeue(self):
    return self.items.pop(0)
  def empty(self):
    return self.size() == 0
  def size(self):
    return len(self.items)

四、應用

著名的 約瑟夫斯問題(Josephus Problem)是應用隊列(確切地說,是循環(huán)隊列)的典型案例。在 約瑟夫斯問題 中,參與者圍成一個圓圈,從某個人(隊首)開始報數(shù),報數(shù)到n+1的人退出圓圈,然后從退出人的下一位重新開始報數(shù);重復以上動作,直到只剩下一個人為止。

值得注意的是,Queue類只實現(xiàn)了簡單隊列,上述問題實際上需要用循環(huán)隊列來解決。在報數(shù)過程中,通過“將(從隊首)出隊的人再入隊(到隊尾)”來模擬循環(huán)隊列的行為。具體代碼如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
def josephus(namelist, num):
  simqueue = Queue()
  for name in namelist:
    simqueue.enqueue(name)
  while simqueue.size() > 1:
    for i in xrange(num):
      simqueue.enqueue(simqueue.dequeue())
    simqueue.dequeue()
  return simqueue.dequeue()
if __name__ == '__main__':
  print(josephus(["Bill", "David", "Kent", "Jane", "Susan", "Brad"], 3))

運行結果:

$ python josephus.py
Susan

希望本文所述對大家的Python程序設計有所幫助。

相關文章

  • Python安全隱患最新URL解析漏洞防范措施

    Python安全隱患最新URL解析漏洞防范措施

    這篇文章主要為大家介紹了Python安全隱患,最新URL解析漏洞的防范措施,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • 關于python中的setup.py

    關于python中的setup.py

    distutils?的精髓在于編寫?setup.py,它是模塊分發(fā)與安裝的指導文件,那么如何編寫?setup.py?呢?這里面的內(nèi)容非常多,我會在本文給大家詳細講解,對python?setup.py相關知識感興趣的朋友一起看看吧
    2022-08-08
  • Python時間序列的實現(xiàn)

    Python時間序列的實現(xiàn)

    本文主要介紹了Python時間序列的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • python文件讀取read及readlines兩種方法使用詳解

    python文件讀取read及readlines兩種方法使用詳解

    這篇文章主要為大家介紹了python文件讀取read及readlines兩種方法的使用示例及區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • python生成日歷實例解析

    python生成日歷實例解析

    這篇文章主要介紹了python生成日歷的方法,實用了python自帶的 calendar模塊加以實現(xiàn),需要的朋友可以參考下
    2014-08-08
  • Python用matplotlib庫畫圖中文和負號顯示為方框的問題解決

    Python用matplotlib庫畫圖中文和負號顯示為方框的問題解決

    matplotlib中畫圖的時候會遇到負號顯示為方框的問題,下面這篇文章主要給大家介紹了關于Python用matplotlib庫畫圖中文和負號顯示為方框的問題解決,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 解決python xx.py文件點擊完之后一閃而過的問題

    解決python xx.py文件點擊完之后一閃而過的問題

    今天小編就為大家分享一篇解決python xx.py文件點擊完之后一閃而過的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • spark?dataframe全局排序id與分組后保留最大值行

    spark?dataframe全局排序id與分組后保留最大值行

    這篇文章主要為大家介紹了spark?dataframe全局排序id與分組后保留最大值行實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • python os模塊使用方法介紹

    python os模塊使用方法介紹

    OS ( Operating System 操作系統(tǒng) ) 操作系統(tǒng)模塊;它是屬于python的標準庫,常用于處理文件和目錄(文件夾)的操作。本文為大家總結了這個模塊的常用方法,希望有所幫助
    2022-08-08
  • python面向對象_詳談類的繼承與方法的重載

    python面向對象_詳談類的繼承與方法的重載

    下面小編就為大家?guī)硪黄猵ython面向對象_詳談類的繼承與方法的重載。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論