面试题
class Queue(): def __init__(self): 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) li = [1, 2, 3, 4, 5] ‘‘‘因为两个队列,先实例化它们‘‘‘ q1 = Queue() q2 = Queue() for i in li: q1.enqueue(i) # [5,4,3,2,1]-->insert(0,i) ‘‘‘先进先出‘‘‘ # print(q1.dequeue())-->[1,2,3,4,5] while q1.size() > 0: while q1.size() > 1: item = q1.dequeue() q2.enqueue(item) # [1,2,3,4,5] print(q1.dequeue()) # [5,4,3,2,1] q1, q2 = q2, q1
class Node(): def __init__(self,item): self.item = item self.next = None class Link(): def __init__(self): self.head = None def insert(self,item): node = Node(item) self.head = node.next if self.head == None: self.head =node return cur = self.head pre = None while cur: pre = cur cur = cur.next pre.next = node def travel(self): cur = self.head while cur: print(cur.item) cur = cur.next def remove(self,item): pre = None cur = self.head if cur.item == item : self.head = cur.next return while cur: pre = cur cur = cur.next if cur.item == item: pre.next = cur.next return ‘‘‘链表倒置操作‘‘‘ def reverse(self): cur = self.head pre = None next_node = cur.next while cur: cur.next = pre pre = cur cur = next_node if cur: next_node = cur.next self.head = pre
其实算法题在:题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台
原文:https://www.cnblogs.com/cou1d/p/12704079.html