日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python数据结构——栈、队列的实现(一)

發(fā)布時間:2024/4/15 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python数据结构——栈、队列的实现(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1. 棧

棧(Stack)是限制插入和刪除操作只能在一個位置進(jìn)行的表,該位置是表的末端,稱為棧的頂(top)。棧的基本操作有PUSH(入棧)和POP(出棧)。棧又被稱為LIFO(后入先出)表。

1.1 棧的實現(xiàn)

class Stack(object):def __init__(self):self.stack=[]def isEmpty(self):return self.stack==[]def push(self,item):self.stack.append(item)def pop(self):if self.isEmpty():raise IndexError,'pop from empty stack'return self.stack.pop()def peek(self):return self.stack[-1]def size(self):return len(self.stack)

1.2 棧應(yīng)用

1.2.1 檢查程序中成對的符號

程序的語法錯誤經(jīng)常是由缺少一個符號造成的。可用棧來檢查符號是否成對。做一個空棧,如果字符是開放符號('({[')則將其push棧中。如果符號是個閉合符號(')]}'),則當(dāng)棧空時報錯,對應(yīng)'()}'的錯誤。否則,將棧pop,如果彈出的符號不是對應(yīng)的開放符號,則報錯,對應(yīng)'(}'的錯誤。文件末尾,如果棧為空,則報錯,對應(yīng)'({}'的錯誤。

?

def match(i,j):opens='([{'closes=')]}'return opens.index(i)==closes.index(j) def syntaxChecker(string):stack=Stack()balanced=Truefor i in string:if i in '([{':stack.push(i)elif i in ')]}':if stack.isEmpty():balanced=Falsebreakelse:j=stack.pop()if not match(j,i):balanced=Falsebreakif not stack.isEmpty():balanced=Falsereturn balanced

1.2.2 進(jìn)制轉(zhuǎn)換

十進(jìn)制轉(zhuǎn)換二進(jìn)制:把十進(jìn)制轉(zhuǎn)成二進(jìn)制一直分解至商數(shù)為0。從最底左邊數(shù)字開始讀,之后讀右邊的數(shù)字,從下讀到上。

來自《Problem Solving with Algorithms and Data Structures》的圖片:

代碼:

def decimal_to_bin(dec):stack=Stack()cur=decwhile cur>0:a=cur%2cur=cur/2stack.push(a)binstr=''while not stack.isEmpty():binstr+=str(stack.pop())return binstr

1.2.3 ?后綴記法

后綴記法(postfix),使用一個棧,見到一個數(shù)時入棧,遇到一個運算符時就作用于從棧彈出的兩個元素,將結(jié)果彈入棧中。

(7+8)/(3+2)可以寫作7 8 + 3 2 + /

來自《Problem Solving with Algorithms and Data Structures》的圖片:

?中綴到后綴的轉(zhuǎn)換:當(dāng)讀到一個操作數(shù)的時候,放到輸出中。讀到操作符(+,-,*,/)時,如果棧為空,則壓入棧中,否則彈出棧元素放到輸出中直到發(fā)現(xiàn)優(yōu)先級更低的元素為止。讀到'(',壓入棧中,讀到')',彈出棧元素并發(fā)到輸出中直到發(fā)現(xiàn)'('為止。在末尾,將棧元素彈出直到該棧變成空棧。

來自《Problem Solving with Algorithms and Data Structures》的圖片:

?

def infixtoPostfix(infix):a={}a['*']=3a['/']=3a['+']=2a['-']=2a['(']=1stack=Stack()post=''for i in infix:if i not in a and i!=')':post+=ielif i=='(':stack.push(i)elif i==')':top=stack.pop()while top!='(':post+=toptop=stack.pop()else: while not stack.isEmpty() and a[i]<=a[stack.peek()]:post+=stack.pop()stack.push(i)while not stack.isEmpty():post+=stack.pop()return postdef postfixExp(postfix):stack=Stack()postlist=postfix.split()for i in postlist:if i not in '+-*/':stack.push(i)else:a=stack.pop()b=stack.pop()result=math(i,b,a)stack.push(result)return stack.pop() def math(x,y,z):if x=='+':return float(y)+float(z)if x=='-':return float(y)-float(z)if x=='*':return float(y)*float(z)if x=='/':return float(y)/float(z)

2 隊列

隊列(queue)也是表,使用隊列時插入和刪除在不同的端進(jìn)行。隊列的基本操作是Enqueue(入隊),在表的末端(rear)插入一個元素,還有出列(Dequeue),刪除表開頭的元素。

class Queue(object):def __init__(self):self.queue=[]def isEmpty(self):return self.queue==[]def enqueue(self,x):self.queue.append(x)def dequeue(self):if self.queue:a=self.queue[0]self.queue.remove(a)return aelse:raise IndexError,'queue is empty'def size(self):return len(self.queue)

  

  

總結(jié)

以上是生活随笔為你收集整理的Python数据结构——栈、队列的实现(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱女淫av麻豆国产 | 欧美激情精品久久久久久蜜臀 | 国产成人三级 | 琪琪原网址 | 奇米影音 | 色婷婷香蕉在线一区二区 | 台湾性dvd性色av | 男女做爰猛烈刺激 | 亚洲图片视频小说 | 久久久国产精品成人免费 | 五月六月丁香 | 理论片在线观看视频 | 青草福利视频 | 一区二区av电影 | 91av国产在线 | www.操| 欧美日韩1 | 九九99久久 | 欧美另类视频在线观看 | 免费观看黄色网 | 欧美日韩一区二区视频在线观看 | 欧日韩在线 | 亚洲一区高清 | 国产自精品 | 久久久久久久无码 | 亚洲视频一区在线播放 | 欧美性xxxx图片 | 黄色一节片 | 野花成人免费视频 | 日本福利一区二区三区 | 久久久久高潮 | 人人爱爱人人 | 老司机深夜免费福利 | 电影寂寞少女免费观看 | 奇米影视一区 | 很黄的性视频 | 放荡的少妇2欧美版 | 青青草激情视频 | 97超碰总站 | 亚洲少妇毛片 | 怡红院男人天堂 | 国产精品无码久久久久一区二区 | 亚洲天堂伊人网 | 久精品视频| 男女曰逼视频 | 亚洲成av人片在线观看无 | 国产成人无码精品久久久久 | 亚洲AV蜜桃永久无码精品性色 | 免费看美女隐私网站 | 妖精视频一区二区 | 国产精品一区二区三区四区在线观看 | 精品女厕偷拍一区二区 | av一区免费| 啪啪网页 | 亚洲色图国产精品 | 成人免费观看网站 | 五月av| 9l视频自拍九色9l视频 | 精品久久久久久亚洲综合网站 | 波多野结衣一区二区三区高清 | 先锋影音久久 | 九九亚洲 | 亚洲网站免费观看 | 天天射,天天干 | 综合激情网五月 | 国产精品国产三级国产aⅴ原创 | 色噜噜在线播放 | 国产又粗又猛又爽69xx | a√天堂资源在线 | 午夜痒痒网 | 成人性做爰aaa片免费看不忠 | 日本一本在线视频 | 黄色性网站 | jizzjizzjizz亚洲| 永久免费未满蜜桃 | 日韩免费视频一区二区视频在线观看 | 欧美中日韩在线 | 男人免费视频 | 成人黄色在线观看视频 | 久久看av | 中文字幕人妻一区二区在线视频 | 黑人毛片网站 | 国产男女猛烈无遮挡免费观看网站 | 久久撸视频 | 99热综合| 三女同志亚洲人狂欢 | 自拍偷拍第八页 | 国产精品麻豆欧美日韩ww | 98色| 欧美日韩性视频 | 日韩电影一区二区在线观看 | 人人舔人人插 | 三上悠亚ssⅰn939无码播放 | 天天操你| 美女扒开内裤让男人桶 | 夜夜综合 | 日韩电影中文字幕在线观看 | 国产一级特黄毛片 | 天天拍夜夜爽 |