順序表實現
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)
(s.pop())
(s.pop())
(s.pop())
print(s.pop())
importqueue
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)
(que.pop_front())
(que.pop_end())
(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...