2023年1月28日 星期六

用百香果品種來設計堆疊類別的資料容器

參考書籍:<演算法:圖解邏輯思維 + Python程式實作 王者歸來>

前一篇文章有提到利用串列來實現堆疊的概念,本篇則是來學習設計類別。在物件導向程式設計,類別和物件是相當重要的,類別就像是蓋房子的藍圖,而物件則是依據這張藍圖所蓋出來的房子。類別是抽象的資料型態,而物件則是實際上存在電腦的記憶體中。

本篇一樣沿用台灣百香果的品種,我們就利用百香果品種來設計一個堆疊的類別,我們實作四個函式分別是初始化__init__()、將元素放入堆疊push()、從堆疊中取出元素、取出堆疊容器有多少元素size()。

範例1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
class Stack():
    def __init__(self):
        self.stack=[]

    def push(self, data):
        self.stack.append(data)

    def pop(self):
        return self.stack.pop()

    def size(self):
        return len(self.stack)

stack = Stack()
passionFruits = ['台農1號', '滿天星', '黃金百香果']
for passionfruit in passionFruits:
    stack.push(passionfruit)
    print(passionfruit, "放到百香果種類的堆疊容器")

print("百香果的種類有", stack.size(), "種")

執行結果 :


範例2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Stack():
    def __init__(self):
        self.stack=[]

    def push(self, data):
        self.stack.append(data)

    def pop(self):
        return self.stack.pop()

    def size(self):
        return len(self.stack)

    def isEmpty(self):
        return self.stack == []

stack = Stack()
passionFruits = ['台農1號', '滿天星', '黃金百香果']
for passionfruit in passionFruits:
    stack.push(passionfruit)
    print(passionfruit, "放到百香果種類的堆疊容器")

print("百香果的種類有", stack.size(), "種")
while not stack.isEmpty():
    print("從百香果種類的堆疊容器中取出", stack.pop())

執行結果:


2023年1月26日 星期四

用百香果品種來學習堆疊的先進後出的概念

 台灣的百香果種類主要可以分成下列三種:

  1. 台農1號
  2. 滿天星,又稱蜜糖
  3. 黃金百香果
參考文章:台灣主要百香果品種介紹
參考書籍:<演算法:圖解邏輯思維 + Python程式實作 王者歸來>

堆疊是電腦科學中很重的的資料結構,函式呼叫和遞迴運算都需要利用堆疊來實現。堆疊是一種先進後出的資料儲存的容器,當用PUSH和POP兩個函式來操作。

由於堆疊並不是Python內建的資料結構,因此我們採用串列(List)來實現,因為串列並沒有PUSH函式,但有APPEND函式,可以從後面加入元素,再利POP函式從後面取出,這樣就可以達到堆疊的運作。

程式碼:

1
2
3
4
5
6
7
8
passionfruits = []
passionfruits.append("台農1號")
passionfruits.append("滿天星")
passionfruits.append("黃金百香果")
print("台灣有那些百香果呢? 有", passionfruits)
print("1.", passionfruits.pop())
print("2.", passionfruits.pop())
print("3.", passionfruits.pop())

執行結果:

程式中先放進台農1號,再來是滿天星,最後是黃金百香果,但取出來時是先取出黃金百香果,再來是滿天星,最後才是最先放進去堆疊的台農1號。