算法简要:

  追加直接往列表后面添加元素,插入是将插入位置后的元素全部往后面移动一个位置,然后再将这个元素放到指定的位置,将长度加1删除是将该位置后面的元素往前移动,

覆盖该元素,然后再将长度减1  

#!/usr/bin/python
# -*- coding: utf-8 -*-class SeqList(object):def __init__(self,maxsize):self.maxsize = maxsizeself.data = range(maxsize)self.last = len(self.data) -1def __getitem__(self, key):if self.is_empty():print 'seqlist is empty'returnelif key<0 or key>self.last:print 'the given key is Error'returnelse:return self.data[key]def __setitem__(self, key, value):if self.is_empty():print 'seqlist is empty'returnelif key<0 or key>self.last:print 'the given key is Error'returnelse:self.data[key] = valuedef __len__(self):length = self.last + 1return lengthdef getlength(self):return self.last+1def clear(self):self.data = []def is_empty(self):if self.last == -1:return Trueelse:return Falsedef is_full(self):if self.last == self.maxsize-1:return Trueelse:return Falsedef getelem(self,index):if self.is_empty():print 'seqlist is empty'returnelif 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'returnelse:for i in range(self.last):if self.data[i]==elem:return idef append(self,elem):if self.is_empty():print 'seqlist is empty'returnelse:self.last +=1self.data  = self.data + [elem]def insert(self,index,elem):if self.is_empty():print 'seqlist is empty'returnelif  index<0 or index> self.last+1:print 'postion is error'returnelif index == self.last+1:self.last+=1self.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] =  elemself.last+=1#print self.datadef delete(self,index):if self.is_empty():print 'seqlist is empty'returnelif  index<0 or index> self.last+1:print 'postion is error'returnelif index == self.last+1:self.last -= 1self.data =self.data[:-1]else:for i in self.data[:-1]:if i >= index:self.data[i] = self.data[i+1]else:passself.data = self.data[:-1]self.last -= 1sl = SeqList(5)print sl.datasl.append(5)print sl.datasl.insert(6,10)print sl.datasl.delete(5)print sl.data

说明:其实python中得list 本身是支持该种数据结构的,可以直接使用。

转载于:https://www.cnblogs.com/yupeng/p/3405072.html

python 数据结构之顺序列表的实现相关推荐

  1. python数据结构_(列表)大O性能_学习笔记(2)

    1.列表 1)一般列表操作命令的复杂度(准确来说是函数的复杂度) 2)时间计算(timeit模块和Timer对象) 要捕获我们的每个函数执行所需的时间,我们将使用 Python 的 timeit 模块 ...

  2. python字典返回键值对列表_返回列表Python dict dictionaries Python 数据结构——字典 返回列表...

    最近研究返回列表,稍微总结一下,以后继续补充: 字典是比列表更先进的一种内置数据结构. "字典"就像现实中的字典一样,每一个单词对应好几个意思.在Python面里就是每一个键对应一 ...

  3. Python数据结构:顺序查找

    顺序查找:从头走到尾 时间复杂度O(n) 代码示例 def linear_search(l,val):for i, v in enumerate(list):# print(i)# print(v)i ...

  4. python数据结构和算法讲解_【学习】python数据结构和算法

    二.算法分析 2.2 什么是算法分析 大O表示法 image.png 2.3 python数据结构的性能 列表 image.png 字典 image.png 说一下list[index]的o(1)原理 ...

  5. 【Python数据结构系列】❤️《栈(顺序栈与链栈)》——❤️知识点讲解+代码实现

    灵魂拷问:为什么要学数据结构? 数据结构,直白地理解,就是研究数据的存储方式.数据存储只有一个目的,即为了方便后期对数据的再利用.因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好 ...

  6. python四十六:继承顺序之线性顺序列表

    python是多继承,所以继承多个类时,会产生查找顺序的问题? 如下就是查找顺序 当类是经典类时,多继承情况下,会按照深度优先方式查找. 当类是新式类时,多继承情况下,会按照广度优先方式查找.(pyt ...

  7. Python编程语言学习:列表与字典互转的几大方法集锦、从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略

    Python编程语言学习:列表与字典互转的几大方法集锦.从列表中按顺序循环抽走一个元素输出剩余元素之详细攻略 目录 列表与字典互转的几大方法集锦 T1.基于两个列表利用zip函数来构造字典 <

  8. eval?python顺序列表模拟栈实现计算器

    python顺序列表模拟栈实现计算器 借助list中的append和pop模拟顺序栈的入栈和出栈 instack = {'+':1,'-':1,'*':3,'/':3,'%':3,'(':6,')': ...

  9. 【数据结构】线性表(一):顺序列表

    线性表(linear_list)是最常用且最简单的一种数据结构,简言之,一个线性表是n个数据元素的有序序列. 例如:(a1 , ... , ai-1 , ai , ai+1 , ... , an):a ...

  10. python列表中随机两个_随机化两个列表并在python中维护顺序

    随机化两个列表并在python中维护顺序 说我有两个简单的清单, a = ['Spears', "Adele", "NDubz", "Nicole&q ...

最新文章

  1. 我们为你精选了一份Jupyter/IPython笔记本集合 !(附大量资源链接)-下篇
  2. gdb调试报错:Missing separate debuginfos, use: debuginfo-install glibc-XXX
  3. 关于arm-linux-gcc的安装与配置
  4. crt上传数据_用SecureCRT来上传和下载数据
  5. jsp中使用cookie时报错……
  6. lgg6可以root的版本_Kali Linux 2020.1版本变更内容
  7. hadoop HA 之 QJM
  8. Helm 3 完整教程(十):Helm 函数讲解(4)加密函数、编码和解码函数
  9. JavaScript基础和Web APIs两个阶段的关联性(1)
  10. 关系图︱python 关系网络的可视化NetworkX(与Apple.Turicreate深度契合)
  11. Raider:Web身份认证测试框架
  12. Adobe向美国反垄断部门投诉苹果封杀Flash
  13. 对话系统的简单综述及应用智能客服
  14. 第一个暴力猴脚本- 抓取携程某个城市所有起飞、到达航班并保存
  15. 深度学习(三)theano入门学习
  16. (CVPR-2020)Strip Pooling:重新思考场景解析的空间池化
  17. Edge浏览器配置教程
  18. 百度可视化工具Sugar简单介绍以及使用说明
  19. BIOS视频中断 10号中断详解
  20. windows下的./ 和 ../

热门文章

  1. SharePoint Designer 2010中的外部内容类型-SQL Server
  2. 56. Merge Intervals - LeetCode
  3. SV fork-join
  4. Git-版本控制 (二)
  5. Python中的枚举enumerate
  6. Eclipse使用之添加字体
  7. django 已登陆用户的权限问题
  8. Eclipse.org上Git已经超越了CVS与SVN
  9. .NET中的数据结构——表
  10. .net Remoting与Web Service的比较