版权声明:转载必须经过本人同意,并且注明文章来源! https://blog.csdn.net/weixin_41665360/article/details/88690250
1、一维数组
中实现数组比较简单的方式就是使用列表,以下基于列表实现一维数组。
# -*- 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、栈
- 栈的特点:后进先出( )
- 栈的操作:
- 进栈( )
- 出栈( )
- 栈空( )
以下基于 的列表实现栈( )
# -*- 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、队列
- 队列的特点:先进先出( )
- 队列的操作:
- 进队列( )
- 出队列( )
- 队列空( )
以下基于 的列表实现队列( )
# -*- 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、总结
线性数据结构包括一维数组,栈和队列。以上基于 标准数据类型 实现,感兴趣的读者可以通过 实现,例如循环链表等。