2018-07-09順序表實(shí)現(xiàn)棧

棧的實(shí)現(xiàn)

——直接用順序表(列表list)進(jìn)行

棧結(jié)構(gòu)實(shí)現(xiàn)

??梢杂庙樞虮韺?shí)現(xiàn),也可以用鏈表實(shí)現(xiàn)。

棧的操作

Stack() 創(chuàng)建一個(gè)新的空棧
push(item) 添加一個(gè)新的元素item到棧頂
pop() 彈出棧頂元素
peek() 返回棧頂元素——不出棧
is_empty() 判斷棧是否為空
size() 返回棧的元素個(gè)數(shù)

添加元素,稱為“壓?!保ā叭霔!保?,英文中成為push
彈出元素,在棧頂pop出元素

  • 邏輯值真假總結(jié):
    假:空字符串,0,空列表,空元組
數(shù)據(jù)類型 False True
整型 0 其他
浮點(diǎn)型 0.0 其他
字符串 ‘’ 其他
字典 {} 其他
元組 () 其他
列表 [] 其他
None None 空格

不同邏輯運(yùn)算符的優(yōu)先級(jí):

not > and > or

代碼實(shí)現(xiàn):

# coding:utf-8

class Stack(object):
    """棧"""
    """Stack() 創(chuàng)建一個(gè)新的空棧
push(item) 添加一個(gè)新的元素item到棧頂
pop() 彈出棧頂元素
peek() 返回棧頂元素
is_empty() 判斷棧是否為空
size() 返回棧的元素個(gè)數(shù)"""

    def __init__(self):
        # 不希望把容器直接給使用者,否則別人可以繞過以下功能直接操作
        self.__list = []  # 一開始沒有元素,空列表

    def push(self, item):
        """添加新的元素"""
        # 根據(jù)容器不同,選擇頭尾
        self.__list.append(item)
        # self.__list.insert(0, item)  # 用順序表的話,尾部為O(1)

    def pop(self):
        """彈出棧元素"""
        return self.__list.pop()

    def peek(self):
        """返回棧頂元素"""
        # 空列表不支持-1操作,所以要有判斷
        if self.__list:
            return self.__list()
        else:
            return None

    def is_empty(self):
        """判斷是否為空"""
        # 遇到return的時(shí)候,先計(jì)算右邊的值,如果是邏輯值就返回
        # 判斷空,如果是空的,就返回真,否則返回假
        return self.__list == []
        # return not self.__list 等同的效果

    def size(self):
        """返回棧元素的個(gè)數(shù)"""
        return len(self.__list)

if __name__ == "__main__":
    s = Stack()
    s.push(1)
    s.push(2)
    s.push(3)
    s.push(4)
    print(s.pop())
    print(s.pop())
    print(s.pop())
    print(s.pop())

實(shí)現(xiàn)結(jié)果:


結(jié)果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,172評(píng)論 3 119
  • 一、棧 1.1 棧的實(shí)現(xiàn) 棧(Stack)是限制僅在表的一端進(jìn)行插入和刪除運(yùn)算的線性表。java沒有棧這樣的數(shù)據(jù)結(jié)...
    yjaal閱讀 1,518評(píng)論 0 1
  • 舊事酒濃,舊的事情過了,只會(huì)讓自己更傷心,不過是離罷了,哭罷了,哭你不會(huì)回來,哭你絕情。這一段路你陪我走過,我們都...
    挽鳩閱讀 282評(píng)論 0 2
  • 如果你正要從Objective-C過渡到Swift,或反過來,一個(gè)在兩種語言間顯示等效代碼的小手冊(cè)會(huì)很有幫助。本文...
    隔墻送來秋千影閱讀 1,552評(píng)論 0 0
  • 天地寬闊 萬般放下 回到生活 像在空里 拾起緣分 放下負(fù)累 孔明燈飛升 一定遙遠(yuǎn) 止,等風(fēng)來
    詩歌君閱讀 330評(píng)論 0 15

友情鏈接更多精彩內(nèi)容