算法简要:

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

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

  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3.  
  4. class SeqList(object):
  5. def __init__(self,maxsize):
  6. self.maxsize = maxsize
  7. self.data = range(maxsize)
  8. self.last = len(self.data) -1
  9.  
  10. def __getitem__(self, key):
  11. if self.is_empty():
  12. print 'seqlist is empty'
  13. return
  14. elif key<0 or key>self.last:
  15. print 'the given key is Error'
  16. return
  17. else:
  18. return self.data[key]
  19.  
  20. def __setitem__(self, key, value):
  21. if self.is_empty():
  22. print 'seqlist is empty'
  23. return
  24. elif key<0 or key>self.last:
  25. print 'the given key is Error'
  26. return
  27. else:
  28. self.data[key] = value
  29.  
  30. def __len__(self):
  31. length = self.last + 1
  32. return length
  33.  
  34. def getlength(self):
  35. return self.last+1
  36.  
  37. def clear(self):
  38. self.data = []
  39.  
  40. def is_empty(self):
  41.  
  42. if self.last == -1:
  43. return True
  44. else:
  45. return False
  46.  
  47. def is_full(self):
  48. if self.last == self.maxsize-1:
  49. return True
  50. else:
  51. return False
  52.  
  53. def getelem(self,index):
  54.  
  55. if self.is_empty():
  56. print 'seqlist is empty'
  57. return
  58. elif index<0 or index>self.last:
  59. print 'position is error'
  60. else:
  61. return self.data[index]
  62.  
  63. def getindex(self,elem):
  64.  
  65. if self.is_empty():
  66. print 'seqlst is empty'
  67. return
  68. else:
  69. for i in range(self.last):
  70. if self.data[i]==elem:
  71. return i
  72.  
  73. def append(self,elem):
  74. if self.is_empty():
  75. print 'seqlist is empty'
  76. return
  77. else:
  78. self.last +=1
  79. self.data = self.data + [elem]
  80.  
  81. def insert(self,index,elem):
  82.  
  83. if self.is_empty():
  84. print 'seqlist is empty'
  85. return
  86. elif index<0 or index> self.last+1:
  87. print 'postion is error'
  88. return
  89. elif index == self.last+1:
  90. self.last+=1
  91. self.data = self.data + [elem]
  92. else:
  93. self.data += [elem]
  94. if index ==0:
  95. for i in self.data[self.last::-1]:
  96. self.data[i+1] = self.data[i]
  97. else:
  98. for i in self.data[self.last:index-1:-1]:
  99. self.data[i+1] = self.data[i]
  100. self.data[index] = elem
  101. self.last+=1
  102.  
  103. #print self.data
  104.  
  105. def delete(self,index):
  106.  
  107. if self.is_empty():
  108. print 'seqlist is empty'
  109. return
  110. elif index<0 or index> self.last+1:
  111. print 'postion is error'
  112. return
  113. elif index == self.last+1:
  114. self.last -= 1
  115. self.data =self.data[:-1]
  116. else:
  117.  
  118. for i in self.data[:-1]:
  119. if i >= index:
  120. self.data[i] = self.data[i+1]
  121. else:
  122. pass
  123. self.data = self.data[:-1]
  124. self.last -= 1
  125.  
  126. sl = SeqList(5)
  127.  
  128. print sl.data
  129.  
  130. sl.append(5)
  131.  
  132. print sl.data
  133.  
  134. sl.insert(6,10)
  135.  
  136. print sl.data
  137.  
  138. sl.delete(5)
  139.  
  140. print sl.data
  141.   

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

python 数据结构之顺序列表的实现的更多相关文章

  1. [Python] 数据结构--实现顺序表、链表、栈和队列

    说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...

  2. Python数据结构——栈的列表实现

    用Python内置的列表(list)实现栈,代码如下: import os os.chdir("E:\\Python_temp") class Stack: def __init_ ...

  3. python数据结构-如何在列表、字典、集合中根据条件筛选数据

    如何在列表.字典.集合中根据条件筛选数据 问题举例: 过滤列表[1, 2, 5, -1, 9, 10]中的负数 筛选字典{“zhangsan”:97, "lisi":80, &qu ...

  4. python 使用set对列表去重,并保持列表原来顺序

    # python 使用set对列表去重,并保持列表原来顺序 list1 = ['cc', 'bbbb', 'afa', 'sss', 'bbbb', 'cc', 'shafa'] for item i ...

  5. python数据结构

      . 数据结构¶ .1. 深入列表¶ 链表类型有很多方法,这里是链表类型的所有方法: list.append(x) 把一个元素添加到链表的结尾,相当于 a[len(a):] = [x] . list ...

  6. Python 数据结构和算法

    阅读目录 什么是算法 算法效率衡量 算法分析 常见时间复杂度 Python内置类型性能分析 数据结构 顺序表 链表 栈 队列 双端队列 排序与搜索 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归 ...

  7. python笔记02:列表与元素

    本章将引入一个新的概念:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合.这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构是序 ...

  8. 零基础学python之入门和列表数据(附详细的代码解释和执行结果截图)

    Python学习笔记 1 快速入门 下载安装好Python之后,在开始找到 双击打开一个窗口,这是一个shell界面编辑窗口,点击左上角的file——new file新建一个窗口,这里可以输入完整的代 ...

  9. Python - 数据结构 - 第十五天

    Python 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构. 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和 ...

随机推荐

  1. P3420 [POI2005]SKA-Piggy Banks

    P3420 [POI2005]SKA-Piggy Banks套路题,a通过某种关系和其他的点建立关系.这种题不是环(dfs就可以了),就是并查集找连通块.这种题要建图,画图,就很清楚了. #inclu ...

  2. [Codeforces743D][luogu CF743D]Chloe and pleasant prizes[树状DP入门][毒瘤数据]

    这个题的数据真的很毒瘤,身为一个交了8遍的蒟蒻的呐喊(嘤嘤嘤) 个人认为作为一个树状DP的入门题十分合适,同时建议做完这个题之后再去做一下这个题 选课 同时在这里挂一个选取节点型树形DP的状态转移方程 ...

  3. ubuntu10.4搭建eclipse for c++环境

    以下操作:经过验证,安装完成后,使用eclipse建立C++工程,直接编译就能运行了:说明:(1)不建议使用下载eclipse for java版本和CDT的方式来搭建环境,因为我没有安装成功:(2) ...

  4. Python3自然语言(NLTK)——语言大数据

    NLTK 这是一个处理文本的python库,我们知道文字性的知识可是拥有非常庞大的数据量,故而这属于大数据系列. 本文只是浅尝辄止,目前本人并未涉及这块知识,只是偶尔好奇,才写本文. 从NLTK中的b ...

  5. 常用伪元素及content属性值的使用

    1.常用伪元素有 after.before,使用方法,如下 a:after{ display:block; content:''; } 2. content: "/\00a0";/ ...

  6. Zookeeper简介说明

    Zookeeper(一)简介说明 1.1 什么是Zookeeper? Zookeeper是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名/配置管理/同步控制/群组服务等.我们可以使用ZK来实 ...

  7. .net 企业管理系统快速搭建框架

          简言   本人在博客园注册也2年多了,一直没有写自己的博客,因为才疏学浅一直跟着园子里的大哥们学习这.net技术.一年之前跳槽到现在的公司工作,由于公司没有自己一套的开发框架,每次都要重新 ...

  8. .Net Core AES加密解密

    一.AES说明 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替 ...

  9. Miscellaneos:ISV

    ylbtech-Miscellaneos:ISV ISV英文全称是Independent Software Vendors ,意为“独立软件开发商”,特指专门从事软件的开发.生产.销售和服务的企业,如 ...

  10. iOS:使用NSRegularExpression正则去掉一串字符串中所有的特殊字符和标点

    一.介绍 在开发中,有时我们需要对一串字符串做特殊的处理后再使用,例如判断是不是特殊字符.去掉所有的特殊字符等.做处理的方法有很多,最简单的就是for循环遍历一个个的比较处理,最好用的应该是使用正则表 ...