1、用列表实现抽象数据结构
栈
class Stack:
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def push(self,item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.item)
队列
class Queue:
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def enqueue(self,item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
双端队列
class Deque:
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def addFront(self,item):
self.items.append(item)
def addRear(self,item):
self.items.insert(0,item)
def removeFront(self):
return self.items.pop()
def removeRear(self):
return self.items.pop(0)
def size(self):
return len(self.items)
2、用链表实现抽象数据结构
结点的类定义
class Node():
def __init__(self, initdata=None):
self.data = initdata
self.next = None
self.prev = None
def getData(self):
return self.data
def getNext(self):
return self.next
def getPrev(self):
return self.prev
def setData(self, newdata):
self.data = newdata
def setNext(self, newnext):
self.next = newnext
def setPrev(self, newprev):
self.prev = newprev
栈
class LinkStack():
def __init__(self):
self.head=None
def isEmpty(self):
return self.head==None
def push(self,item):
temp=Node(item)
temp.setNext(self.head)
self.head=temp
def pop(self):
t=self.head.getData()
self.head=self.head.getNext()
return t
def peek(self):
return self.head.getData()
def size(self):
current=self.head
count=0
while current !=None:
count=count+1
current=current.getNext()
return count
队列
class LinkQueue():
def __init__(self):
self.head=None
def isEmpty(self):
return self.head==None
def enqueue(self,item):
current=self.head
if current==None:
temp=Node(item)
self.head=temp
else:
while current.next !=None:
current=current.next
temp=Node(item)
current.next=temp
def dequeue(self):
tempnum=(self.head).getData()
self.head=self.head.getNext()
return tempnum
def size(self):
current=self.head
count=0
while current !=None:
count=count+1
current=current.getNext()
return count