Python数据结构之顺序表的实现代码示例
作者:yupeng 时间:2021-02-22 07:13:08
顺序表即线性表的顺序存储结构。它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的。比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存储在LOC(1)+(i-1)*sizeof(ElemType)位置上,其中sizeof(ElemType)表示每一个元素所占的空间。
追加直接往列表后面添加元素,插入是将插入位置后的元素全部往后面移动一个位置,然后再将这个元素放到指定的位置,将长度加1删除是将该位置后面的元素往前移动,覆盖该元素,然后再将长度减1
实现代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
class SeqList(object):
def __init__(self,maxsize):
self.maxsize = maxsize
self.data = range(maxsize)
self.last = len(self.data) -1
def __getitem__(self, key):
if self.is_empty():
print 'seqlist is empty'
return
elif key<0 or key>self.last:
print 'the given key is Error'
return
else:
return self.data[key]
def __setitem__(self, key, value):
if self.is_empty():
print 'seqlist is empty'
return
elif key<0 or key>self.last:
print 'the given key is Error'
return
else:
self.data[key] = value
def __len__(self):
length = self.last + 1
return length
def getlength(self):
return self.last+1
def clear(self):
self.data = []
def is_empty(self):
if self.last == -1:
return True
else:
return False
def is_full(self):
if self.last == self.maxsize-1:
return True
else:
return False
def getelem(self,index):
if self.is_empty():
print 'seqlist is empty'
return
elif index<0 or index>self.last:
print 'position is error'
else:
return self.data[index]
def getindex(self,elem):
if self.is_empty():
print 'seqlst is empty'
return
else:
for i in range(self.last):
if self.data[i]==elem:
return i
def append(self,elem):
if self.is_empty():
print 'seqlist is empty'
return
else:
self.last +=1
self.data = self.data + [elem]
def insert(self,index,elem):
if self.is_empty():
print 'seqlist is empty'
return
elif index<0 or index> self.last+1:
print 'postion is error'
return
elif index == self.last+1:
self.last+=1
self.data = self.data + [elem]
else:
self.data += [elem]
if index ==0:
for i in self.data[self.last::-1]:
self.data[i+1] = self.data[i]
else:
for i in self.data[self.last:index-1:-1]:
self.data[i+1] = self.data[i]
self.data[index] = elem
self.last+=1
#print self.data
def delete(self,index):
if self.is_empty():
print 'seqlist is empty'
return
elif index<0 or index> self.last+1:
print 'postion is error'
return
elif index == self.last+1:
self.last -= 1
self.data =self.data[:-1]
else:
for i in self.data[:-1]:
if i >= index:
self.data[i] = self.data[i+1]
else:
pass
self.data = self.data[:-1]
self.last -= 1
sl = SeqList(5)
print sl.data
sl.append(5)
print sl.data
sl.insert(6,10)
print sl.data
sl.delete(5)
print sl.data
说明:其实python中得list 本身是支持该种数据结构的,可以直接使用。
总结
python中实现k-means聚类算法详解
Python内存管理方式和垃圾回收算法解析
Python算法输出1-9数组形成的结果为100的所有运算式
如有不足之处,欢迎留言指出。
来源:https://www.cnblogs.com/yupeng/archive/2013/11/03/3405072.html
标签:python,数据结构,顺序表
0
投稿
猜你喜欢
python 实现rolling和apply函数的向下取值操作
2022-03-15 07:10:08
解决安装pycharm后不能执行python脚本的问题
2023-07-25 06:51:04
ORACLE 10g 安装教程[图文]
2009-05-24 19:12:00
用CSS实现柱状图(Bar Graph)的方法(二)—基于表格元素的柱状图
2008-05-26 13:23:00
ASP实现最简洁的多重查询的解决方案
2007-09-28 12:00:00
WEB2.0网页制作标准教程(2)什么是名字空间
2007-11-13 13:04:00
Python map和reduce函数用法示例
2022-06-21 09:02:25
MySQL转义字符的实际应用
2010-08-31 14:55:00
Go语言使用Gob传输数据
2023-08-06 05:12:28
使用实现pandas读取csv文件指定的前几行
2021-06-28 12:05:26
在django中使用post方法时,需要增加csrftoken的例子
2023-08-12 06:44:34
Anaconda的安装及其环境变量的配置详解
2022-08-31 19:21:11
Python读取配置文件的实战操作
2021-08-12 19:48:09
Python Socket编程入门教程
2022-03-08 01:08:49
详解Python中的分组函数groupby和itertools)
2022-08-30 15:03:18
ASP中将Excel数据导入到Access
2009-02-02 09:15:00
python中实现数组和列表读取一列的方法
2021-04-07 08:04:48
通过Python绘制中国结的示例代码
2021-05-29 15:15:21
Pycharm内置终端及远程SSH工具的使用教程图文详解
2023-03-26 09:58:30
python使用ctypes库调用DLL动态链接库
2023-12-08 14:14:05