想象一摞被堆起來(lái)的書,這就是棧。這堆書的特點(diǎn)是,最后被堆進(jìn)去的書,永遠(yuǎn)在最上面。
從這堆書里面取一本書出來(lái),取哪本書最方便?肯定是最上面那本。
棧這種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)就是如此:后進(jìn)先出(Last In First Out - LIFO),即最后被堆進(jìn)去的數(shù)據(jù),最先被拿出來(lái)。
想象一摞被堆起來(lái)的書,這就是棧。這堆書的特點(diǎn)是,最后被堆進(jìn)去的書,永遠(yuǎn)在最上面。
從這堆書里面取一本書出來(lái),取哪本書最方便?肯定是最上面那本。
棧這種數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)就是如此:后進(jìn)先出(Last In First Out - LIFO),即最后被堆進(jìn)去的數(shù)據(jù),最先被拿出來(lái)。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by xuehz on 2017/8/8
class Stack():
def __init__(self, size):
self.stack = []
self.size = size
self.top = -1
def push(self, content):
if self.Full():
print 'Stack is Full'
else:
self.stack.append(content)
self.top = self.top+1
def out(self):
if self.Empty():
print 'Stack is Empty'
else:
self.stack.pop()
self.top = self.top-1
def Full(self):
if self.top == self.size:
return True
else:
return False
def Empty(self):
if self.top == -1:
return True
else:
return False
class Stack1:
"""模擬棧"""
"""
Stack() 建立一個(gè)空的棧對(duì)象
push() 把一個(gè)元素添加到棧的最頂層
pop() 刪除棧最頂層的元素,并返回這個(gè)元素
peek() 返回最頂層的元素,并不刪除它
isEmpty() 判斷棧是否為空
size() 返回棧中元素的個(gè)數(shù)
Stack Operation Stack Contents Return Value
s.isEmpty() [] True
s.push(4) [4]
s.push('dog') [4,'dog']
s.peek() [4,'dog'] 'dog'
s.push(True) [4,'dog',True]
s.size() [4,'dog',True] 3
s.isEmpty() [4,'dog',True] False
s.push(8.4) [4,'dog',True,8.4]
s.pop() [4,'dog',True] 8.4
s.pop() [4,'dog'] True
s.size() [4,'dog'] 2
"""
def __init__(self):
self.items = []
def isEmpty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
if not self.isEmpty():
return self.items[len(self.items) - 1]
def size(self):
return len(self.items)
if __name__ == '__main__':
s = Stack1()
print(s.isEmpty())
s.push(4)
s.push('dog')
print(s.peek())
s.push(True)
print(s.size())
print(s.isEmpty())
s.push(8.4)
print(s.pop())
print(s.pop())
print(s.size())