題組內容
五、在計算機科學中,「stack」是 1 種常見的資料結構,請回答下列問題:(3 題,共 15 分)
(三)請基於「stack」概念就以下問題設計 1 個程式(若程式非基於「stack」概念進行實作,將不予計分):將 4 個浮點數(20.22、12.21、70.25 和 58.29)插入 1 個 stack 中,然後逐一從該 stack 中移除它們,且必須能檢測該 stack 是否已為空。(6 分)
詳解 (共 2 筆)
匿名鸚鵡
詳解 #7581563
python
class Stack:
def __init__(self):
self._data = []
def is_empty(self) -> bool:
"""檢測堆疊是否為空"""
return len(self._data) == 0
def push(self, item: float) -> None:
"""插入元素至堆疊"""
self._data.append(item)
def pop(self) -> float:
"""從堆疊移除並回傳頂端元素"""
if self.is_empty():
raise IndexError("Stack 為空,無法執行 pop 操作")
return self._data.pop()
def main():
stack = Stack()
float_numbers = [20.22, 12.21, 70.25, 58.29]
# 1. 將 4 個浮點數依序插入 stack
print("=== 插入元素至 Stack ===")
for num in float_numbers:
stack.push(num)
print(f"Push: {num}")
# 2. 逐一從 stack 移除元素(並於每次移除前檢測是否為空)
print("\n=== 逐一移除元素 ===")
while not stack.is_empty():
val = stack.pop()
print(f"Pop: {val}")
# 3. 最終檢測 stack 是否已為空
if stack.is_empty():
print("\n檢測結果:Stack 目前已為空。")
if __name__ == "__main__":
main()
hchungw
詳解 #6126977
以下是一個基於「stack」概念的Python程式,此程式將四個浮點數(20.22、12.21、70.25和58.29)插入一個堆疊中,然後逐一從該堆疊中移除它們,並檢測該堆疊是否已經為空。
python
複製程式碼
class Stack:
def __init__(self):
self.stack = []
複製程式碼
class Stack:
def __init__(self):
self.stack = []
def push(self, value):
self.stack.append(value)
self.stack.append(value)
def pop(self):
if not self.is_empty():
return self.stack.pop()
else:
return None
if not self.is_empty():
return self.stack.pop()
else:
return None
def peek(self):
if not self.is_empty():
return self.stack[-1]
else:
return None
if not self.is_empty():
return self.stack[-1]
else:
return None
def is_empty(self):
return len(self.stack) == 0
return len(self.stack) == 0
def size(self):
return len(self.stack)
return len(self.stack)
# 創建一個堆疊實例
stack = Stack()
stack = Stack()
# 插入四個浮點數
stack.push(20.22)
stack.push(12.21)
stack.push(70.25)
stack.push(58.29)
stack.push(20.22)
stack.push(12.21)
stack.push(70.25)
stack.push(58.29)
# 打印堆疊中的元素
print("插入元素後的堆疊內容:", stack.stack)
print("插入元素後的堆疊內容:", stack.stack)
# 逐一從堆疊中移除元素並打印
while not stack.is_empty():
removed_element = stack.pop()
print(f"移除的元素: {removed_element}")
while not stack.is_empty():
removed_element = stack.pop()
print(f"移除的元素: {removed_element}")
# 檢查堆疊是否為空
if stack.is_empty():
print("堆疊現在是空的。")
else:
print("堆疊不是空的。")
程式說明:
Stack類:
if stack.is_empty():
print("堆疊現在是空的。")
else:
print("堆疊不是空的。")
程式說明:
Stack類:
__init__:初始化堆疊,使用一個空列表來表示堆疊。
push:將一個元素壓入堆疊。
pop:從堆疊中彈出一個元素,如果堆疊為空,返回None。
peek:查看堆疊頂端的元素但不移除它,如果堆疊為空,返回None。
is_empty:檢查堆疊是否為空,返回布林值。
size:返回堆疊的元素數量。
插入和移除元素:
push:將一個元素壓入堆疊。
pop:從堆疊中彈出一個元素,如果堆疊為空,返回None。
peek:查看堆疊頂端的元素但不移除它,如果堆疊為空,返回None。
is_empty:檢查堆疊是否為空,返回布林值。
size:返回堆疊的元素數量。
插入和移除元素:
使用push方法將四個浮點數壓入堆疊。
使用pop方法逐一從堆疊中移除元素,並在每次移除時打印被移除的元素。
使用is_empty方法檢測堆疊是否為空,並打印相應的訊息。
執行結果:
程式將按順序插入四個浮點數,然後按後進先出的順序逐一移除並打印這些元素。最後,程式將打印堆疊是否為空的訊息。
使用pop方法逐一從堆疊中移除元素,並在每次移除時打印被移除的元素。
使用is_empty方法檢測堆疊是否為空,並打印相應的訊息。
執行結果:
程式將按順序插入四個浮點數,然後按後進先出的順序逐一移除並打印這些元素。最後,程式將打印堆疊是否為空的訊息。
透過這個示例程式,我們可以清楚地看到堆疊的基本操作是如何實現的,並且該程式嚴格按照堆疊(後進先出,LIFO)的概念來處理資料。