1. 程式人生 > >資料結構--利用Python實現常用的棧結構

資料結構--利用Python實現常用的棧結構

    棧的簡介

       棧作為一種資料結構,是一種只能在一端進行插入和刪除操作。它按照先進後出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料(最後一個數據被第一個讀出來)。

    棧的作用

1、記憶體管理中使用的堆疊;

     2、基於桟實現的二叉樹的遍歷;

     3、在處理需求中的平衡問題:

            (1)判斷符號是成對出現的,比如<>,{},[],()等

            (2)判斷這個字串是否是迴文字串,比如:bcb, '123321',等。

    棧的C語言實現:

   demo:判讀一個字串是否是迴文字串,輸入bcb, 輸出yes

    思路分析:

            (1)首先,讀取這行字串,並且計算這個字串的長度

            (2)其次,如果一個字串是迴文的話,那麼它的一定是對稱的,計算出中點。

                    mid =  len / 2  -1

            (3)再次,我們將mid之前的資料全都寫入到棧中

            (4)最後,再將寫入的資料一詞取出,並且和mid之後的資料進行比較,如果可以匹配成功,返回輸出yes, 否者輸出no

    程式碼如下:



    棧的python語言實現:

class Node(object):
    # 定位的點的值和一個指向
def __init__(self, val): # 指向元素的值,原佇列第二元素 self.val = val # 指向的指標 self.next = None class stack(object): # 初始化最開始的位置 def __init__(self): self.top = None # 獲取棧頂的元素 def peek(self): # 如果棧頂不為空 if self.top != None: # 返回棧頂元素的值 return self.top.val else: return None
# 新增到棧中 def push(self,n): # 例項化節點 n = Node(n) # 頂端元素傳值給一個指標 n.next = self.top self.top = n return n.val # 退出棧 def pop(self): if self.top == None: return None else: tmp = self.top.val # 下移一位,進行 self.top = self.top.next return tmp if __name__ == '__main__': s = stack() s.push(1) print(s.pop())