数据结构与算法实战合集

双向链表

# 实现链表节点
class Node:
	def __init__(self,key,value):
		self.key = key
		self.value = value
		self.prev = None
		self.next = None

	def __str__(self):
		val = {{}: {}}.format(self.key,self.value)
		return val

	def __repr__(self):
		val = {{}: {}}.format(self.key,self.value)
		return val


# 双向链表实现head指针 tail指针  链表的容量

class DoubleLinkList:
	def __init__(self, cap = 0xffff):
		self.cap = cap
		self.head = None
		self.tail = None
		self.size = 0  # 当前链表存储了多少个节点


	# 从头部添加
	def __add_head(self,node):
		if not self.head:
			self.head = node
			self.tail = node
			self.head.next = None
			self.tail.next = None
		else:
			node.next = self.head
			self.head.prev = node
			self.head = node
			self.head.prev = None

		self.size += 1
		return node

	# 从尾部添加
	def __add_prev(self,node):
		if not self.tail:
			self.head = node
			self.tail = node
			self.head.next = None
			self.tail.next = None
		else:
			self.prev.next = node
			node.prev = self.tail
			self.tail = node
			self.tail.next = None
		self.size += 1
		return node

	# 删除任意节点
	def __del_node(self,node):
		if not node:
			node = self.tail
		if node == self.tail:
			pass
		elif node == self.head:
			pass

		else:
			node.prev.next = node.next
			node.next.prev = node.prev
			self.size -= 1

		return node


	# 弹出头部节点
	def __del_head(self):
		pass

	# 弹出尾部节点
	def __del_prev(self):
		pass

基于双向链表实现FIFO,LRU,LFU算法

pass

树的剪枝

  • 九宫格问题,围棋问题等
  • 都是树的模型,寻求最优解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值