《我的第一本算法书》数组、栈和队列的Python实现
Python中可以使用自带的List数据结构方便地实现数组、栈和队列的数据结构。
一、数组
数组访问数据十分简单,添加删除数据程序内部步骤较多。
1、数组特点
(1)数据呈线性排列
数据按顺序存储在内存的连续空间内。
(2)数据增加和删除内部执行步骤较多
由于顺序的存储模式,导致增删数据需要对所执行位置后的所有数据都进行挪动,程序内部的步骤较多,效率不如链表高。
(3)可随机访问
数据支持通过下标进行访问。
2、代码实现
创建一个名为arr的List作为数组,放入Blue、Yellow和Red字符串,可以直接通过下标访问它们。
arr = ['Blue', 'Yellow', 'Red']
print(arr[0], arr[1], arr[2])
输出结果:
Blue Yellow Red
(1)增加数据
使用List的insert方法:
arr.insert(1, 'Green')
print(arr)
输出结果:
['Blue', 'Green', 'Yellow', 'Red']
(2)删除数据
使用List的remove方法:
arr.remove('Green')
print(arr)
输出结果:
['Blue', 'Yellow', 'Red']
二、栈
也是一种线性排列的数据结构,但只能访问最新添加的数据。
1、栈的特点 - 先进后出
就像一摞书一样,往上堆叠之后,只能先查看最上面的书,拿开最上面的书后,才能对下方的书进行查看。
2、代码实现
(1)入栈(增加数据)
使用List的append方法:
stack = []
stack.append('Blue')
stack.append('Green')
stack.append('Red')
(2)出栈(取出/删除数据)
使用List的pop方法:
print(stack.pop(), stack.pop(), stack.pop())
输出结果:
Red Green Blue
三、队列
也是一种线性排列的数据结构,但只能访问最早添加的数据。
1、队列的特点 - 先进先出
先来的数据先处理,就像排队一样,只能访问队伍最前面的人,最前面的人离开后,才能访问下一个。
2、代码实现
(1)入队(增加数据)
使用List的append方法:
queue = []
queue.append('Blue')
queue.append('Green')
queue.append('Red')
(2)出队(取出/删除数据)
使用List的pop方法:
print(queue.pop(0), queue.pop(0), queue.pop(0))
输出结果:
Blue Green Red