如何实现栈
栈中先进去的数最后被弹出。
class Stack():
def __init__(self):
self.items=[]###采用数组的方式实现栈,栈空间结构连续
def is_empty(self):
return len(self.items)==0
def top(self):#弹栈
if not self.is_empty():
return self.items[len(self.items-1)]
def size(self):
return len(self.items)
def pop(self):压栈
if self.is_empty():
return None
else:
return self.items.pop()
def push(self,data):
self.items.append(data)
队列和栈不同,在队列中,先进去的数先出来,一端(队头)插入一端(对胃)删除。
数组方式实现队列
class Queue():
def __init__(self):
self.arr=[]
self.font=None
self.rear=None
def is_empty(self):
return self.font==self.rear
def size(self):
if self.is_empty():
return None
else:
return self.rear-self.font
def geFont(self):
if self.is_empty(self):
return None
else:
return self.items[self.font]
def deQueue(self):
if self.rear>self.font:
self.font=self.font+1
else:
print("队列已空")
def enqueue(self,data):
self.arr.append[data]
self.rear=aelf.rear+1
链表方式实现队列
class Lnode():
def __init__(self,data):
self.data=data
self.next=None
class Queue():
def __init__(self):
self.font=None
self.rear=None
def is_empty(self):
if self.font==self.rear:
return True
else:return False
def size(self):
p=self.font
count=0
while p!=None:
count+=1
p=p.next
return count
def enQueue(self,data):
tmp=Lnode(data)
if self.font==None:
self.font=self.rear=tmp
else:
self.rear.next=tmp
self.rear=tmp
def deQueue(self):
if self.font==None:
print("队列为空")
else:
self.font=self.font.next
def getfont(self):
if self.font==None:
return None
else:
return self.font.data
def getback(self):
if self.rear==None:
return None
else:
return self.rear.data
if __name__=="__main__":
queue=Queue()
queue.enQueue(1)
queue.enQueue(2)
b本来想早点更完,可是,前几天在准备面试的东西,有点耽搁了。最近把面试的经验总结一下