python链表实现栈_python实现链表队列栈
#!/usr/bin/python
#?-*-?coding:?utf-8?-*-
#便于測試?data?使用數(shù)字
class?Node(object):
def?__init__(self,data):
self.data?=?data
self.next?=?None
self.prev?=?None
class?List(object):
def?__init__(self):
self.next?=?self
self.prev?=?self
self.size?=?0
#?是否為空
def?empty(self):
return?self.size?==?0
#?長度
def?lsize(self):
return?self.size
#?適用于隊(duì)列
def?put(self,node):?#?入隊(duì)
node.next?=?self.next
node.prev?=?self
self.next.prev?=?node
self.next?=?node
self.size?+=?1
def?get(self):?#?出隊(duì)
if?self.size?==?0:
return?None
node?=?self.prev
node.prev.next?=?self
self.prev?=?node.prev
self.size?-=?1
return?node
#?適用于棧
def?push(self,node):?#?入棧
node.next?=?self.next
node.prev?=?self
self.next.prev?=?node
self.next?=?node
self.size?+=?1
def?pull(self):?#?出棧
if?self.size?==?0:
return?None
node?=?self.next
node.next.prev?=?self
self.next?=?node.next
self.size?-=?1
return?node
#?適用于鏈表?在某些情況下也可以當(dāng)隊(duì)列或棧處理
def?add(self,node):?#頭部插入
node.next?=?self.next
node.prev?=?self
self.next.prev?=?node
self.next?=?node
self.size?+=?1
def?append(self,node):?#尾部插入
node.prev?=?self.prev
node.next?=?self
self.prev.next?=?node
self.prev?=?node
self.size?+=?1
def?insert(self,node,index):?#index前面插入
cur?=?self
for?i?in?range(self.lsize()):
cur?=?cur.next
if?cur.data?==?index:
node.next?=?cur
node.prev?=?cur.prev
cur.prev.next?=?node
cur.prev?=?node
self.size?+=?1
return?True
return?False
def?remove(self,index):?#刪除節(jié)點(diǎn)
cur?=?self
for?i?in?range(self.lsize()):
cur?=?cur.next
if?cur.data?==?index:
cur.prev.next?=?cur.next
cur.next.prev?=?cur.prev
self.size?-=?1
return?True
return?False
def?item(self):?#?迭代
cur?=?self
for?i?in?range(self.lsize()):
cur?=?cur.next
yield?cur.data
def?find(self,data):?#?查找節(jié)點(diǎn)是否存在
return?data?in?self.item()
if?__name__?==?'__main__':
l?=?List()
for?i?in?range(10):
n?=?Node(i+1)
l.push(n)
print('queue?size?=',l.lsize())
while?l.empty()?!=?True:
print(l.pull().data)
print('queue?size?=',l.lsize())
for?i?in?range(10):
n?=?Node(i+1)
l.put(n)
print('stack?size?=',l.lsize())
while?l.empty()?!=?True:
print(l.get().data)
print('stack?size?=',l.lsize())
for?i?in?range(10):
n?=?Node(i+1)
#l.add(n)
l.append(n)
print('list?size?=',l.lsize())
print('insert?66?to?list?=',l.insert(Node(66),6))
print('list?size?=',l.lsize())
print('6?in?list?=',l.find(6))
print('remove?6?from?list?=',l.remove(6))
print('6?in?list?=',l.find(6))
ite?=?l.item()
print(ite)
for?i?in?ite:
print(i)
總結(jié)
以上是生活随笔為你收集整理的python链表实现栈_python实现链表队列栈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 加密 数字_java 加密数字
- 下一篇: python内置方法怎么使用_pytho