Python利用单链表实现栈与队列,栈链与队列链:
"Node.py"
class Node:
"""description of class"""
def __init__(self, val, p=0):
self.data=val
self.next=p
from Node import Node
class LinkStack:
def __init__(self,root):
n=Node(root)
self.__root=n
self.num=1
def __init__(self):
self.__root=0
self.num=0
def GetLength(self):
return self.num
def Clear(self):
self.__root=0
self.num=0
def IsEmpty(self):
if(self.num==0):
return True
else:
return False
def Push(self,item):
n=Node(item)
if self.__root==0:
self.__root=n
else:
n.next=self.__root
self.__root=n
self.num+=1
def Pop(self):
if self.IsEmpty():
print "Stack is empty!"
return
else:
p=self.__root
self.__root=self.__root.next
self.num-=1
return p.data
def GetTop(self):
if self.IsEmpty():
print "Stack is empty!"
return
else:
return self.__root.data
class LinkQueue:
def __init__(self,root):
n=Node(root)
self.__front=self.__rear=n
self.num=1
def __init__(self):
self.__front=0
self.__rear=0
self.num=0
def GetLength(self):
return self.num
def Clear(self):
self.__front=0
self.__rear=0
self.num=0
def IsEmpty(self):
if(self.num==0):
return True
else:
return False
def In(self,item):
n=Node(item)
if(self.IsEmpty()):
self.__rear=n
self.__front=n
else:
self.__rear.next=n
self.__rear=self.__rear.next
self.num+=1
def Out(self):
if(self.IsEmpty()):
print "The link queue is empty"
return
else:
res=self.__front
self.__front=self.__front.next
self.num-=1
return res.data
def GetFront(self):
if(self.IsEmpty()):
print "The link queue is empty"
return
else:
return self.__front.data