数据结构与算法(python):一维数组、栈与队列

1、一维数组

p y t h o n 3 python3 python3 中实现数组比较简单的方式就是使用列表,以下基于列表实现一维数组。

# -*- coding: utf-8 -*-
# define a array class
class array(object):

	# 默认生成一个大小为32的数组,每个元素默认值为None
	def __init__(self,size=32):
		self._size = size
		self._items = [None] * self._size
	
	# 访问数组第index+1个元素
	def __getitem__(self,index):
		return self._items[index]
	
	# 修改索引为index的元素值
	def __setitem__(self,value):
		self._items[index]=value

	# 返回数组长度
	def __length__(self):
		return self._size
	
	# 清空数组
	def  clear(self,value=None):
		for i in range(self._size):
			self._items[i]=value
	
	def __iter__(self):
		for item in self._items:
			yield item

2、栈

  • 栈的特点:后进先出( L I F O LIFO LIFO
  • 栈的操作:
    • 进栈( p u s h push push
    • 出栈( p o p pop pop
    • 栈空( e m p t y empty empty

以下基于 p y t h o n 3 python3 python3 的列表实现栈( s t a c k stack stack

# -*- coding: utf-8 -*-
class stack(object):
	# 初始化
	def __init__(self):
		self._list = []

	# 进栈
	def push(self,value):
		return self._list.append(value)

	# 出栈
	def pop(self):
		try:
			return self._list.pop()
		except IndexError:
			print('stack is empty!')
	
	# 栈空
	def empty(self):
		return len(self._list)==0

3、队列

  • 队列的特点:先进先出( F I F O FIFO FIFO
  • 队列的操作:
    • 进队列( e n q u e u e enqueue enqueue
    • 出队列( d e q u e u e dequeue dequeue
    • 队列空( e m p t y empty empty

以下基于 p y t h o n 3 python3 python3 的列表实现队列( q u e u e queue queue

# -*- coding: utf-8 -*-
class queue(object)
	# 初始化
	def __init__(self):
		self._list = []

	# 进队列
	def enqueue(self,value):
		return self._list.append(value)

	# 出队列
	def dequeue(self):
		try:
			return self._list.pop()
		except IndexError:
			print('queue is empty!')
	
	# 队列空
	def empty(self):
		return len(self._list)==0

4、总结

线性数据结构包括一维数组,栈和队列。以上基于 p y t h o n 3 python3 python3 标准数据类型 l i s t list list 实现,感兴趣的读者可以通过 A D T ADT ADT 实现,例如循环链表等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值