更多的理论细节可以用《数据结构》严蔚敏 看几遍,数据结构很重要是实现算法的很大一部分
下面主要谈谈python什么实现
10.1 栈和队列
栈:后进先出LIFO
队列:先进先出FIFO
python 中使用list实现在这些功能
栈:压栈 append() 退栈 pop()
队列: 入队 append() 出队 pop(0)
栈:
>>> stack = list() >>> stack.append(3) >>> stack.append(2) >>> stack.append(5) >>> stack.append(1) >>> stack [3, 2, 5, 1] >>> stack.pop() 1 >>> stack.pop() 5
队列:
>>> queue = list() >>> queue.append(1) >>> queue.append(2) >>> queue.append(3) >>> queue.append(4) >>> queue.append(5) >>> queue [1, 2, 3, 4, 5] >>> queue.pop(0) 1 >>> queue.pop(0) 2 >>> queue [3, 4, 5]
链表&指针对象的数组实现
这些数据结构在python中就没有存在的价值, 用list都能轻松实现
有根树:
class Node: def __init__(self,data): self.left = None self.right = None self.parent = None self.data = data
给出一个结点代码,后面的二叉搜索树红黑树再具体讨论。
散列表(哈希表)
”散列表是普通数组概念的推广“一这句话来解释散列表再好不过了.
可以把数组看成散列函数为hash(x) = x % MAX (MAX比所以值都大) 得到的散列值 在这个下标下处理数据
优点:很好的期望值
难点:哈希函数的设计和冲突处理
下面引用别人的总结:
散列表(python 使用dict):
>>> #初始化 >>> a = dict(one = 1,two = 2) >>> #访问 >>> a[‘one‘] 1 >>> #增加 >>> a[‘three‘] = 3 >>> a {‘three‘: 3, ‘one‘: 1, ‘two‘: 2} >>>
参考引用:
http://www.wutianqi.com/?cat=515&paged=4
http://blog.csdn.net/fxjtoday/article/details/6448083
时间: 2024-10-11 06:53:04