电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

基于python實現模擬數據結構模型

瀏覽:81日期:2022-07-21 14:37:20

模擬棧

Stack() 創建一個空的新棧。 它不需要參數,并返回一個空棧。 push(item)將一個新項添加到棧的頂部。它需要 item 做參數并不返回任何內容。 pop() 從棧中刪除頂部項。它不需要參數并返回 item 。棧被修改。 peek() 從棧返回頂部項,但不會刪除它。不需要參數。 不修改棧。 isEmpty() 測試棧是否為空。不需要參數,并返回布爾值。 size() 返回棧中的 item 數量。不需要參數,并返回一個整數。

class Stack(): def __init__(self): self.items = [] def push(self,item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return len(self.items) - 1 def isEmpty(self): return self.items == [] def size(self): return len(self.items)s = Stack()s.push(1)s.push(2)s.push(3)print(s.pop())print(s.pop())print(s.pop())print(s.isEmpty())

模擬隊列

Queue() 創建一個空的新隊列。 它不需要參數,并返回一個空隊列。 enqueue(item) 將新項添加到隊尾。 它需要 item 作為參數,并不返回任何內容。 dequeue() 從隊首移除項。它不需要參數并返回 item。 隊列被修改。 isEmpty() 查看隊列是否為空。它不需要參數,并返回布爾值。 size() 返回隊列中的項數。它不需要參數,并返回一個整數。

class Queue(): def __init__(self): self.items = [] def enqueue(self,item): self.items.insert(0,item) def dequeue(self): return self.items.pop() def isEmpty(self): return self.items == [] def size(self): return len(self.items)q = Queue()q.enqueue(1)q.enqueue(2)q.enqueue(3)print(q.dequeue())print(q.dequeue())print(q.dequeue())

案例:燙手山芋

燙手山芋游戲介紹:6個孩子圍城一個圈,排列順序孩子們自己指定。第一個孩子手里有一個燙手的山芋,需要在計時器計時1秒后將山芋傳遞給下一個孩子,依次類推。規則是,在計時器每計時7秒時,手里有山芋的孩子退出游戲。該游戲直到剩下一個孩子時結束,最后剩下的孩子獲勝。請使用隊列實現該游戲策略,排在第幾個位置最終會獲勝。

準則:隊頭孩子的手里永遠要有山芋。

queue = Queue()kids = [’A’,’B’,’C’,’D’,’E’,’F’]#將六個孩子添加到隊列中,A是隊頭位置的孩子for kid in kids: queue.enqueue(kid)while queue.size() > 1: #在7秒之內山芋會被傳遞6次 for i in range(6): kid = queue.dequeue() queue.enqueue(kid) queue.dequeue()print(’獲勝者為:’,queue.dequeue())

模擬雙端隊列

同同列相比,有兩個頭部和尾部。可以在雙端進行數據的插入和刪除,提供了單數據結構中棧和隊列的特性

Deque() 創建一個空的新deque。它不需要參數,并返回空的deque。 addFront(item) 將一個新項添加到deque的首部。它需要item參數并不返回任何內容。 addRear(item) 將一個新項添加到deque的尾部。它需要item參數并不返回任何內容。 removeFront() 從deque中刪除首項。它不需要參數并返回item。deque被修改。 removeRear() 從deque中刪除尾項。它不需要參數并返回item。deque被修改。 isEmpty() 測試deque是否為空。它不需要參數,并返回布爾值。 size() 返回deque中的項數。它不需要參數,并返回一個整數。

案例:回文檢查

回文是一個字符串,讀取首尾相同的字符,例如,radar toot madam。

def isHuiWen(s): ex = True q = Dequeue() # 將字符串的每一個字符添加到雙端隊列中 for ch in s: q.addFront(ch) for i in range(len(s) // 2): font = q.removeFront() rear = q.removeRear() if font != rear: ex = False break return ex

模擬鏈表

. is_empty():鏈表是否為空 . length():鏈表長度 . travel():遍歷整個鏈表 . add(item):鏈表頭部添加元素 . append(item):鏈表尾部添加元素 . insert(pos, item):指定位置添加元素 . remove(item):刪除節點 . search(item):查找節點是否存在

結點對象:

class Node(): def __init__(self,item): self.item = item self.next = None

鏈表對象:

class Link(): #構建出一個空的鏈表 def __init__(self): self._head = None #永遠指向鏈表中的頭節點 #想鏈表的頭部插入節點 def add(self,item): node = Node(item) node.next = self._head self._head = node def travel(self): cur = self._head #鏈表為空則輸出‘鏈表為空’ if self._head == None: print(’鏈表為空!’) while cur: print(cur.item) cur = cur.next def isEmpty(self): return self._head == None def length(self): cur = self._head count = 0 while cur: count += 1 cur = cur.next return count def search(self,item): cur = self._head find = False while cur: if cur.item == item:find = Truebreak cur = cur.next return find def append(self,item): node = Node(item) #鏈表為空的情況 if self._head == None: self._head = node return cur = self._head #頭節點 pre = None #cur的前一個節點 while cur: pre = cur cur = cur.next pre.next = node def insert(self,pos,item): node = Node(item) if pos < 0 or pos > self.length(): print(’重新給pos賦值!!!’) return cur = self._head pre = None for i in range(pos): pre = cur cur = cur.next pre.next = node node.next = cur def remove(self,item): cur = self._head pre = None if self._head == None:#鏈表為空 print(’鏈表為空,沒有可刪除的節點!!1’) return #刪除的是第一個節點的情況 if self._head.item == item: self._head = self._head.next return #刪除的是非第一個節點的情況 while cur: pre = cur cur = cur.next if cur.item == item:pre.next = cur.nextreturn

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 章丘丰源机械有限公司 - 三叶罗茨风机,罗茨鼓风机,罗茨风机 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 警方提醒:赣州约炮论坛真的安全吗?2025年新手必看的网络交友防坑指南 | 喷涂流水线,涂装流水线,喷漆流水线-山东天意设备科技有限公司 | 早报网| 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 北京软件开发_软件开发公司_北京软件公司-北京宜天信达软件开发公司 | 水稻烘干机,小麦烘干机,大豆烘干机,玉米烘干机,粮食烘干机_巩义市锦华粮食烘干机械制造有限公司 水环真空泵厂家,2bv真空泵,2be真空泵-淄博真空设备厂 | 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | 书信之家_书信标准模板范文大全 最新范文网_实用的精品范文美文网 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 分轨 | 上传文件,即刻分离人声和伴奏 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 浙江浩盛阀门有限公司| 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商| 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 临海涌泉蜜桔官网|涌泉蜜桔微商批发代理|涌泉蜜桔供应链|涌泉蜜桔一件代发 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 盘扣式脚手架-附着式升降脚手架-移动脚手架,专ye承包服务商 - 苏州安踏脚手架工程有限公司 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 破碎机锤头_耐磨锤头_合金锤头-鼎成机械一站式耐磨铸件定制服务 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 |