顺序表的实现(python)

利用python内置的list来实现顺序表

class SequenceList(object):
	"""顺序表"""
	def __init__(self, size=6):
		# 初始化顺序表
		self.max = size
		self.num = 0
		# 提前构建一个固定大小的列表
		self.data = [None]*self.max


	# 判断线性表是否为空
	def is_empty(self):
		return self.num is 0

	# 判断线性表是否为满
	def is_full(self):
		return self.num is self.max

	# 获取线性表中某一位置的值
	def get(self, index):
		if not isinstance(index, int):
			raise TypeError
		if 0 <= index < self.max:
			return self.data[index]
		else:
			raise IndexError

	# 修改线性表中某一位置的值
	def set(self, index, value):
		if not isinstance(index, int):
			raise TypeError

		if 0 <= index < self.max:
			self.data[index] = value
		else:
			raise IndexError

	# 返回线性表中元素的个数
	def length(self):
		return self.num

	# 在表尾插入一个元素
	def append(self, value):
		if self.num >= self.max:
			print("list is full")
		else:
			self.data[self.num]=value
			self.num += 1

	# 在表中任意位置插入一个元素
	def insert(self, index, value):
		if not isinstance(index, int):
			raise IndexError

		if self.num >= self.max:
			print("list is full")

		if 0 <= index < self.max:
			for i in range(self.num, index, -1):
				self.data[i] = self.data[i-1]
			self.data[index] = value
			self.num += 1
		else:
			raise IndexError

	# 删除表中某一位置的值
	def remove(self, index):
		if not isinstance(index, int):
			raise IndexError

		if 0 <= index < self.num:
			for i in range(index, self.num):
				self.data[i] = self.data[i+1]
			self.num -= 1

		else:
			raise IndexError

	# 销毁线性表
	def destroy(self): 
		self.__init__()

	# 遍历
	def travel(self):
		for i in range(self.num):
			print(self.data[i])



if __name__ == '__main__':
	list = SequenceList()

	list.append(1)
	list.append(2)
	list.append("你好")

	list.insert(0, 8)

	list.insert(2, 6)

	print(list.get(1))

	list.set(0, 9)

	list.remove(3)

	print(list.length())
	print(list.is_full())
	print(list.is_empty())
	list.travel()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值