資料結構 之 棧與佇列

2022-03-17 21:29:55 字數 3204 閱讀 3092

順序表實現

class

stack(object):

"""棧

"""def

__init__

(self):

self.

__list = #

選用順序表或鍊錶

defpush(self,item):

"""壓棧

"""self.

時間複雜度o(1)

self.__list.insert(0,item) #

頭部插入,時間複雜度o(n)

#說明:鍊錶結構的話,頭部插入。

defpop(self):

return self.__list

.pop()

#return self.__list[0] #時間複雜度 o(n)

defpeek(self):

"""返回棧頂元素

"""if self.__list: #

不為空return self.__list[-1]

else

:

return

none

defis_empty(self):

"""是否為空

"""return

not self.__list

defsize(self):

return len(self.__list)if

__name__ == '

__main__':

s =stack()

s.push(1)

s.push(3)

s.push(4)

s.push(5)

s.push(6)

print

(s.pop())

print

(s.pop())

print

(s.pop())

print(s.pop())

換個姿勢,鍊錶實現 佇列

import

queue

class

node(object):

def__init__

(self,item):

self.item =item

self.next =none

class

queue(object):

"""佇列

"""def

__init__(self,node=none):

self._head =node

defenqueue(self,item):

"""入隊

"""node =node(item)

node.next =self._head

self._head =node

defdequeue(self):

"""出隊

"""cur =self._head

pre =none

while cur.next!=none:

pre =cur

cur =cur.next

if cur is self._head:

self._head =cur.next

return

cur.item

pre.next =none

return

cur.item

defis_empty(self):

"""判斷是否為空

操作:

#

encoding:utf-8

#__author__ = 'donghao'

#__time__ = 2019/3/16 17:17

class

deque(object):

def__init__

(self):

self._list =

defadd_front(self,item):

self._list.insert(0,item)

defadd_end(self,item):

defpop_front(self):

return

self._list.pop(0)

defpop_end(self):

return

self._list.pop()

defsize(self):

return

len(self._list)

defis_empty(self):

return self._list ==

if__name__ == '

__main__':

que =deque()

que.add_end(1)

que.add_end(2) #

[6,5,4,1,2,3]

que.add_end(3)

que.add_front(4)

que.add_front(5)

que.add_front(6)

print

(que.pop_front())

print

(que.pop_end())

print

(que.pop_end())

print(que.pop_end())

資料結構之棧與佇列

寫在前面 棧與佇列是兩種不同特點的資料結構。棧遵循著先進後出的特點,它就像乙個器皿,先放進去的後被取出來,後放進去也就是靠近瓶口的先出來。佇列,就像它的名字一般,它的結構類似於排隊,先進先出,後進後出。棧的實現package stack public class mystack public mys...

資料結構之棧與佇列

順序棧儲存結構 define stack size 50 typedef structstack 順序棧初始化 void initstack stack s 順序進棧 int push stack s,type x 順序棧出棧 int pop stack s,type x 鏈棧儲存結構 typede...

C 資料結構之棧與佇列

先講乙個笑話,怎樣判斷乙個人是否是程式設計師?答 問他push的反義詞是什麼。回答pull的是普通人,回答pop的才是程式設計師,push和pop就是棧和佇列中要用到的函式。棧是一種線性儲存結構,元素遵循 先進後出 並且只能在棧頂進行插入和刪除,附上 演示棧的用法,超詳細。include inclu...