棧可以用順序表實現,也可以用鍊錶實現。
棧的操作
stack() 建立乙個新的空棧
push(item) 新增乙個新的元素item到棧頂
pop() 彈出棧頂元素
peek() 返回棧頂元素
is_empty() 判斷棧是否為空
size() 返回棧的元素個數
python的list來實現棧的操作
class
stack
(object)
:'''棧'''
def__init__
(self)
: self.__list =
"""判斷是否為空"""
defis_empty
(self)
:return self.__list ==
"""加入元素"""
defpush
(self, item)
:#可以選擇從棧頂或棧底推入,這裡我們選擇從list尾部插入,
"""彈出元素"""
defpop
(self)
:return self.__list.pop(
)"""返回棧頂元素"""
defpeek
(self)
:if self.__list:
return self.__list[-1
]def
size
(self)
:"""返回棧的大小"""
return
len(self.__list)
if __name__ ==
"__main__"
: stack = stack(
) stack.push(
"hello"
) stack.push(
"itcast"
)print stack.size(
)print stack.peek(
)print stack.pop(
)print stack.pop(
)print stack.pop(
)
一端進一端出
# coding:utf-8
class
queue
(object):
"""佇列"""
def__init__
(self)
: self.__list =
list()
defenqueue
(self, item)
:"""往佇列中新增元素"""
defdequeue
(self)
:"""從佇列頭部刪除乙個元素"""
return self.__list.pop(0)
defis_empty
(self)
:"""判空"""
return
not self.__list
defsize
(self)
:"""返回乙個佇列長度"""
return
len(self.__list)
if __name__ ==
"__main__"
: q = queue(
) q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.enqueue(4)
q.enqueue(5)
print
(q.size())
print
(q.dequeue())
print
(q.size())
print
(q.is_empty(
))
一端可以進也可以出,另一端可以進也可以出
# coding:utf-8
class
dequeue
(object):
"""雙端佇列"""
def__init__
(self)
: self.__list =
list()
defadd_front
(self, item)
:"""往佇列頭部新增元素"""
self.__list.insert(
0, item)
defadd_rear
(self, item)
:"""往佇列尾部新增元素"""
defremove_front
(self)
:"""從佇列頭部刪除乙個元素"""
self.__list.pop(0)
defremove_rear
(self)
:"""從佇列尾部刪除乙個元素"""
return self.__list.pop(
)def
is_empty
(self)
:"""判空"""
return
not self.__list
defsize
(self)
:"""返回乙個佇列長度"""
return
len(self.__list)
資料結構與演算法(三)
變位詞是指兩個詞之間存在組成字母的 重新排列關係 如 heart和earth,python和typhon 為了簡單起見,假設參與判斷的兩個詞僅由小寫 字母構成,而且長度相等 詞1中的字元逐個在詞2中檢查是否存在,存在則標記防止重複檢查。如果每個字元都能找到,並且詞1詞2長度相同則是變位詞。否則不是。...
資料結構與演算法(三)
鍊錶由單向的鏈變成雙向鏈,使用這種資料結構,我們不再拘束於單鏈表的單向建立於遍歷等操作。在單鏈表中,有乙個資料域,還有乙個指標域,資料域用來儲存相關資料,而指標域負責鍊錶之間的 聯絡 在雙向鍊錶中,需要有兩個指標域,乙個負責向後連線,乙個負責向前連線。單鏈表的結構 struct list 雙向鍊錶的...
python資料結構與演算法
coding utf 8 import sys 使用以下語句將引數的str格式轉換為int格式 l list map int sys.argv 1 split target int sys.argv 2 def binarysearch print l print target left 0 rig...