python 数据结构之顺序列表的实现
算法简要:
追加直接往列表后面添加元素,插入是将插入位置后的元素全部往后面移动一个位置,然后再将这个元素放到指定的位置,将长度加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 数据结构之顺序列表的实现的更多相关文章
- [Python] 数据结构--实现顺序表、链表、栈和队列
说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...
- Python数据结构——栈的列表实现
用Python内置的列表(list)实现栈,代码如下: import os os.chdir("E:\\Python_temp") class Stack: def __init_ ...
- python数据结构-如何在列表、字典、集合中根据条件筛选数据
如何在列表.字典.集合中根据条件筛选数据 问题举例: 过滤列表[1, 2, 5, -1, 9, 10]中的负数 筛选字典{“zhangsan”:97, "lisi":80, &qu ...
- python 使用set对列表去重,并保持列表原来顺序
# python 使用set对列表去重,并保持列表原来顺序 list1 = ['cc', 'bbbb', 'afa', 'sss', 'bbbb', 'cc', 'shafa'] for item i ...
- python数据结构
. 数据结构¶ .1. 深入列表¶ 链表类型有很多方法,这里是链表类型的所有方法: list.append(x) 把一个元素添加到链表的结尾,相当于 a[len(a):] = [x] . list ...
- Python 数据结构和算法
阅读目录 什么是算法 算法效率衡量 算法分析 常见时间复杂度 Python内置类型性能分析 数据结构 顺序表 链表 栈 队列 双端队列 排序与搜索 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归 ...
- python笔记02:列表与元素
本章将引入一个新的概念:数据结构.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合.这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在python中,最基本的数据结构是序 ...
- 零基础学python之入门和列表数据(附详细的代码解释和执行结果截图)
Python学习笔记 1 快速入门 下载安装好Python之后,在开始找到 双击打开一个窗口,这是一个shell界面编辑窗口,点击左上角的file——new file新建一个窗口,这里可以输入完整的代 ...
- Python - 数据结构 - 第十五天
Python 数据结构 本章节我们主要结合前面所学的知识点来介绍Python数据结构. 列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和 ...
随机推荐
- P3420 [POI2005]SKA-Piggy Banks
P3420 [POI2005]SKA-Piggy Banks套路题,a通过某种关系和其他的点建立关系.这种题不是环(dfs就可以了),就是并查集找连通块.这种题要建图,画图,就很清楚了. #inclu ...
- [Codeforces743D][luogu CF743D]Chloe and pleasant prizes[树状DP入门][毒瘤数据]
这个题的数据真的很毒瘤,身为一个交了8遍的蒟蒻的呐喊(嘤嘤嘤) 个人认为作为一个树状DP的入门题十分合适,同时建议做完这个题之后再去做一下这个题 选课 同时在这里挂一个选取节点型树形DP的状态转移方程 ...
- ubuntu10.4搭建eclipse for c++环境
以下操作:经过验证,安装完成后,使用eclipse建立C++工程,直接编译就能运行了:说明:(1)不建议使用下载eclipse for java版本和CDT的方式来搭建环境,因为我没有安装成功:(2) ...
- Python3自然语言(NLTK)——语言大数据
NLTK 这是一个处理文本的python库,我们知道文字性的知识可是拥有非常庞大的数据量,故而这属于大数据系列. 本文只是浅尝辄止,目前本人并未涉及这块知识,只是偶尔好奇,才写本文. 从NLTK中的b ...
- 常用伪元素及content属性值的使用
1.常用伪元素有 after.before,使用方法,如下 a:after{ display:block; content:''; } 2. content: "/\00a0";/ ...
- Zookeeper简介说明
Zookeeper(一)简介说明 1.1 什么是Zookeeper? Zookeeper是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名/配置管理/同步控制/群组服务等.我们可以使用ZK来实 ...
- .net 企业管理系统快速搭建框架
简言 本人在博客园注册也2年多了,一直没有写自己的博客,因为才疏学浅一直跟着园子里的大哥们学习这.net技术.一年之前跳槽到现在的公司工作,由于公司没有自己一套的开发框架,每次都要重新 ...
- .Net Core AES加密解密
一.AES说明 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替 ...
- Miscellaneos:ISV
ylbtech-Miscellaneos:ISV ISV英文全称是Independent Software Vendors ,意为“独立软件开发商”,特指专门从事软件的开发.生产.销售和服务的企业,如 ...
- iOS:使用NSRegularExpression正则去掉一串字符串中所有的特殊字符和标点
一.介绍 在开发中,有时我们需要对一串字符串做特殊的处理后再使用,例如判断是不是特殊字符.去掉所有的特殊字符等.做处理的方法有很多,最简单的就是for循环遍历一个个的比较处理,最好用的应该是使用正则表 ...