我有點卡住了讓我的頭繞着堆棧算法。 堆棧算法的僞代碼是:python中的堆棧實現,索引位置如何工作以及如何檢查堆棧是否爲空?
- 檢查堆棧是否已滿。
- 如果堆棧已滿,則報告錯誤。
- 遞增堆棧指針。
- 將新數據項插入堆棧指針所指向的單元並停止。
1)我一直認爲列表或數組從0開始。如果我們在添加數據項之前遞增堆棧指針,那麼我們如何開始添加第一個數據項,如果堆棧指針總是從0開始,第一個項目應該進入索引0 - 但是如果我們在添加之前增加,那麼它不會進入1並且將索引0留空?
2)當我看到在python中實現的實際代碼時,它看起來像這樣:在我的代碼中是否需要檢查堆棧是否已滿並報告錯誤。爲什麼在代碼中我們不增加堆棧指針?
3)如何在我的彈出功能中產生一個錯誤,如果我的堆棧是空的,它說棧是空的?
stack = []
def view():
for x in range (len(stack)):
print(stack[x])
def push():
item = input("Please enter the item you wishto add to the stack: ")
stack.append(item)
def pop():
if stack < 0:
print ("stack is empty")
else:
item = stack.pop(-1)
print ("you just popped out: ", item)
while True:
print ("")
print("Python implementation of a stack")
print("********************************")
print("1. view Stack")
print("2. Push onto Stack")
print("3. Pop out of Stack")
print("********************************")
print("")
menu_choice = int (input("Please enter your menu choice: "))
print ("")
print ("")
if menu_choice == 1:
view()
elif menu_choice == 2:
push()
elif menu_choice == 3:
pop()
如果您有多個問題,您應該孤立他們,並分別問他們。請參閱http://www.stackoverflow.com/help/mcve –
,但他們都參考這個代碼 –