資料結構與演算法(Python)(三)

2021-10-02 20:56:13 字數 2653 閱讀 5067

棧可以用順序表實現,也可以用鍊錶實現。

棧的操作

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...