棧
棧只允許在一端進行操作,所以是後進先出即lifo
可以用順序表實現,也可以用鍊錶實現
以下為用順序表實現的**
# coding:utf-8
class
stack
(object):
"""棧"""
def__init__
(self)
: self.__list =
defpush
(self, item)
:"""新增乙個新的元素item到棧頂"""
defpop
(self)
:"""彈出棧頂元素"""
return self.__list.pop(
)def
peek
(self)
:"""返回棧頂元素"""
if self.__list:
return self.__list[-1
]else
:return
none
defis_empty
(self)
:"""判斷棧是否為空"""
return self.__list ==
# return not self.__list
defsize
(self)
:"""返回棧的元素個數"""
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(
))
佇列
佇列是只允許在一端進行插入操作,在另一段進行刪除操作,所以是先進先出fifo
# coding:utf-8
class
queue
(object):
"""佇列"""
def__init__
(self)
: self.__list =
defenqueue
(self, item)
:"""往佇列中新增乙個item元素"""
defdequeue
(self)
:"""從佇列頭部刪除乙個元素"""
return self.__list.pop(0)
defis_empty
(self)
:"""判斷乙個佇列是否為空"""
return self.__list ==
defsize
(self)
:"""返回佇列的大小"""
return
len(self.__list)
if __name__ ==
"__main__"
: s = queue(
) s.enqueue(1)
s.enqueue(2)
s.enqueue(3)
s.enqueue(4)
print
(s.dequeue())
print
(s.dequeue())
print
(s.dequeue())
print
(s.dequeue(
))
雙端佇列
相當於兩個棧
class
deque
(object):
"""雙端佇列"""
def__init__
(self)
: self.__list =
defadd_front
(self, item)
:"""往佇列中新增乙個item元素"""
self.__list.insert(
0, item)
defadd_rear
(self, item)
:"""往佇列中新增乙個item元素"""
defpop_front
(self)
:"""從佇列頭部刪除乙個元素"""
return self.__list.pop(0)
defpop_rear
(self)
:"""從佇列頭部刪除乙個元素"""
return self.__list.pop(
)def
is_empty
(self)
:"""判斷乙個佇列是否為空"""
return self.__list ==
defsize
(self)
:"""返回佇列的大小"""
return
len(self.__list)
if __name__ ==
"__main__"
: s = queue(
) s.enqueue(1)
s.enqueue(2)
s.enqueue(3)
s.enqueue(4)
print
(s.dequeue())
print
(s.dequeue())
print
(s.dequeue())
print
(s.dequeue(
))
佇列 , 雙端佇列, 棧
注意 linkedlist中新增或者取出的方法有很多,比如add,offer,offerfirst,offerlast,push.根據使用的資料結構不同,最好區分使用.一,佇列queue fifo first in first out 0,模型上一般為右進左出,右端入隊並稱為隊尾,左端出隊並稱為隊頭...
棧 佇列 雙端佇列
棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,由於棧資料結構只允許在一端進行操作,因而按照後進先出 lifo,last in first out 的原理運作。棧結構實現 棧可以用順序表實現,也可以用鍊錶實現。棧的操作 功能stack 建立乙個新的空棧 push i...
棧 佇列 雙端佇列
一 棧結構實現 class stack object 棧 def init self self.items defis empty self 判斷是否為空 return self.items defpush self,item 加入元素 defpop self 彈出元素 return self.it...