算法简要:

  追加直接往列表后面添加元素,插入是将插入位置后的元素全部往后面移动一个位置,然后再将这个元素放到指定的位置,将长度加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 数据结构之顺序列表的实现的更多相关文章

  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. HDU 2612 find a way 【双BFS】

    <题目链接> 题目大意:两个人分别从地图中的Y 和 M出发,要共同在 @ 处会面(@不止有一处),问这两个人所走距离和的最小值是多少. 解题分析: 就是对这两个点分别进行一次BFS,求出它 ...

  2. hdu 3466 Proud Merchants 【限制性01背包】+【贪心】

    题目链接:https://vjudge.net/contest/103424#problem/J 转载于:https://www.bbsmax.com/A/RnJW16GRdq/ 题目大意: 有n个商 ...

  3. P1279 字串距离

    P1279 字串距离一看就是字符串dp,然而并不会,骗分之后爆零了.以后dp题要好好想想转移方程.f[i][j]表示是a串选了前i个字符,b串选了前j个字符的距离.显然(QAQ)f[i][j]=min ...

  4. 简述synchronized和java.util.concurrent.locks.Lock的异同?

    主要相同点:Lock能完成synchronized所实现的所有功能 . 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.synchronized会自动释放锁,而Lock一 ...

  5. 学习ApiCloud遇到的问题

    1,当前账户xx 似乎没有权限访问此应用的云端数据,请切换账 检查项目的config.xml的id与apicloud的应用id是否一致

  6. Python学习——迭代器&生成器&装饰器

    一.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅 ...

  7. json Map JsonObject JsonArray

    json字符串是不应包含 "\"转义字符的,json不能通过js json工具转换或者java json工具 包转换那么一定程度上json字符串已被在一次处理不在能转成json了. ...

  8. 潭州课堂25班:Ph201805201 第十四课 异常,处理 (课堂笔记)

    程序难免会出现错误 : 语法错误 : 逻辑错误: AttributeError  -->>  试图访问一个对象没有的属性, IOError  ---->>  输入输出异常 In ...

  9. bootStrap中的ul导航2

    <!doctype html><html > <head> <meta charset="utf-8"> <link rel= ...

  10. p4 环境变量的优先级

    Perforce settings such as port, user, and workspace names using the following methods, listed in ord ...