Python程序设计之数据结构

本文介绍了Python中的几种数据结构,包括堆、队列、栈、链表、二叉树和有向图。堆是一种满足堆性质的二叉树结构,最小元素在根节点。队列遵循FIFO原则,栈则是LIFO,Python内置支持栈操作。链表是通过指针链接的非顺序存储结构,而二叉树包含左子树和右子树。同时,文章还提到了自定义这些数据结构的方法。
摘要由CSDN通过智能技术生成

1.堆
堆是一个二叉树,其中每个父亲节点的值都不大于其所有子节点的值。
使用数组或列表来实现堆时,对于所有的k(下标,从0开始)都满足heap[k]<=heap[2k+1]和heap[k]<=heap[2k+2],并且堆中最小的元素总是位于二叉树的根节点。 栈又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;

import heapq 	#引入堆模块
import random 	#引入random模块
data=random.shuffle(list(range(10)))	#列表初始化为打乱的数字
heap=[]		#建堆
for n in data:
	heapq.heappush(heap,n)		#堆初始化
heapq.heappush(heap,0.5)		#新数据入堆	
heapq.heappop(heap)			#弹出最小的元素,堆会自动重建
list=[1,2,3]	#初始化列表
heapq.heapify(list)			#将列表转换为堆
heapq.heapreplace(list,6)	#替换列表中的元素值,自动重建堆
heapq.nlargest(2,list)		#返回堆中最大的两个元素
heapq.nsmallest(1,list)		#返回堆中最小的元素

2.队列
队列的特点是先进先出(FIFO)和后进后出(LILO)。 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

import queue	#引入队列模块(Python3.x中使用queue,Python2.x使用Queue)
q=queue.Queue()
for i in range(3)
	q.put(i)	#元素入队
>>>q.queue
>>>dqueue([0,1,2])
q.get()			#队列元素出队
q1=queue.LifoQueue(5)	#后进先出队列(后进元素在队列get()操作时先出)
q2=queue.PriorityQueue(5)	#优先级队列(默认出队时按从小到大)

自定义队列结构:

class myQueue:
	def __init__(self, size=10):
		self._content=[]
		self._size=size
		self._current=0
		
	def Setsize(self,size):
		if size<size._current:	#如果缩小队列,应
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值