本文為學習資料結構與演算法python版的個人筆記線性結構的定義
棧stack是其中一種線性結構
棧的定義
棧的基本操作
棧的基本操作例子
這裡是把列表尾端當做棧頂class stack(object):
def __init__(self):
self.items=
def isempty(self):
return self.items==
def push(self,item):
def pop(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def size(self):
return len(self.items)
即判斷小括號是否一一左右對應
def parchecker(symbolstring):
s=stack()
balance=true
index=0
while index加強版-判斷小括號,中括號,大括號是否一一左右對齊
def parchecker1(symbolstring):
s=stack()
balance=true
index=0
while index0:
a=number%base
rmstack.push(a)
number=number//base
base_stack=stack()
while not rmstack.isempty():
base_stack.push(secret_code[rmstack.pop()])
return base_stack.items
print(baseconverter(25,16))
def changeform(expression_str):
expression_list=list(expression_str)
nums=list(map(str,range(0,10)))
letter1=list(map(chr, range(ord('a'), ord('z') + 1)))
letter2=list(map(chr, range(ord('a'), ord('z') + 1)))
operation_num=nums+letter1+letter2
operation_symbol=stack()
output_list=
#定義operation優先順序
pre_order={}
pre_order['(']=1
pre_order['+']=2
pre_order['-']=2
pre_order['*']=3
pre_order['/']=3
for expression in expression_list:
if expression in operation_num:
elif expression=="(":
operation_symbol.push(expression)
elif expression==")":
top=operation_symbol.pop()
while not (top =="("):
top=operation_symbol.pop()
else:
while (not operation_symbol.isempty()) and (pre_order[expression]<= pre_order[operation_symbol.peek()]):
top=operation_symbol.pop()
operation_symbol.push(expression)
while not operation_symbol.isempty():
top=operation_symbol.pop()
output=('').join(output_list)
return output
def calculate(expression_str):
expression_list=list(expression_str)
operation_nums=stack()
for expression in expression_list:
if expression in ["+","-","*","/"]:
top_right=operation_nums.pop()
top_left=operation_nums.pop()
result=eval(top_left+expression+top_right)
operation_nums.push(str(result))
else:
operation_nums.push(expression)
return float(operation_nums.pop())
線性結構 共享棧
如果乙個程式需要使用多個棧,使用順序棧就會造成棧空間大小難以估計,從而造成有的棧溢位有的棧空閒,此時可以建立乙個共享棧,通俗地講就是將兩個棧的棧底設定在同乙個陣列的兩端,棧頂位置用top1 top2表示。如圖 所以共享棧的資料結構型別為 include define max 10 define in...
資料結構 線性結構 棧
棧 和佇列相反的作用,越是先存入的資料就得越到後才能取出,根據這個特性可以用陣列或鍊錶模擬出棧。陣列模擬棧 新增資料正常順序,每天加乙個數棧頂加一次,彈棧的時候將棧頂指標的數彈出即可,遍歷棧陣列時是從棧頂開始迴圈。1 class arraystack9 判斷棧是否已滿 10public boolea...
資料結構線性表的定義及操作
注 資料結構三要素 邏輯結構 資料的運算 儲存結構 物理結構 線性表是最基本 最簡單 也是最常用的一種資料結構。線性表 linear list 是資料結構的一種,乙個線性表是n個具有相同特性的資料元素的有限序列。線性表的相鄰元素之間存在著序偶關係。如用 a1,ai 1,ai,ai 1,an 表示乙個...