python实现顺序表的简单代码


Posted in Python onSeptember 28, 2018

 顺序表即线性表的顺序存储结构。它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的。比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存储在LOC(1)+(i-1)*sizeof(ElemType)位置上,其中sizeof(ElemType)表示每一个元素所占的空间。

python实现顺序表的简单代码

下面是顺序表的python实现:

#coding:utf-8
 
'''
author:xzfreewind
'''
 
class SeqList(object):
 def __init__(self,max=10):
  self.max = max  #默认顺序表最多容纳10个元素
  #初始化顺序表数组
  self.num = 0
  self.date = [None] * self.max
 
 def is_empty(self):  #判定线性表是否为空
  return self.num is 0
 
 def is_full(self):  #判定线性表是否全满
  return self.num is self.max
 
 #获取线性表种某一位置的元素
 def __getitem__(self, i):
  if not isinstance(i,int): #如果i不为int型,则判定输入有误,即Type错误
   raise TypeError
  if 0<= i < self.num: #如果位置i满足条件,即在元素个数的范围内,则返回相对应的元素值,否则,超出索引,返回IndexError
   return self.date[i]
  else:
   raise IndexError
 
 #修改线性表种某一位置的元素
 def __setitem__(self, key, value):
  if not isinstance(key,int): #如果key不为int型,则判定输入有误,即Type错误
   raise TypeError
  if 0<= key <self.num:  #如果位置key满足条件,即在元素个数的范围内,则返回相对应的元素值,否则,超出索引,返回IndexError
   self.date[key] = value
  else:
   raise IndexError
 #按值查找元素的位置
 def getLoc(self,value):
  n = 0
  for j in range(self.num):
   if self.date[j] == value:
    return j
  if j == self.num:
   return -1  #如果遍历顺序表还未找到value值相同的元素,则返回-1表示顺序表种没有value值的元素
 
 #统计线性表中元素的个数
 def Count(self):
  return self.num
 
 #表末尾插入操作
 def appendLast(self,value):
  if self.num >= self.max:
   print 'The list is full'
   return
  else:
   self.date[self.num] = value
   self.num += 1
 
 #表任意位置插入操作:
 def insert(self,i,value):
  if not isinstance(i,int):
   raise TypeError
  if i < 0 and i > self.num:
   raise IndexError
  for j in range(self.num,i,-1):
   self.date[j] = self.date[j-1]
  self.date[i] = value
  self.num += 1
 
 
 #删除某一位置的操作
 def remove(self,i):
  if not isinstance(i,int):
   raise TypeError
  if i < 0 and i >=self.num:
   raise IndexError
  for j in range(i,self.num):
   self.date[j] = self.date[j+1]
  self.num -= 1
 
 #输出操作
 def printList(self):
  for i in range(0,self.num):
   print self.date[i]
 
 #销毁操作
 def destroy(self):
  self.__init__()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python字符串格式化
Jun 15 Python
多版本Python共存的配置方法
May 22 Python
python如何在列表、字典中筛选数据
Mar 19 Python
pycharm下查看python的变量类型和变量内容的方法
Jun 26 Python
Python中反射和描述器总结
Sep 23 Python
python调用opencv实现猫脸检测功能
Jan 15 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
Python装饰器用法与知识点小结
Mar 09 Python
Python函数基本使用原理详解
Mar 19 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
python开发一款翻译工具
Oct 10 Python
linux安装Python3.4.2的操作方法
Sep 28 #Python
python求质数的3种方法
Sep 28 #Python
python数据结构学习之实现线性表的顺序
Sep 28 #Python
python实现单链表中删除倒数第K个节点的方法
Sep 28 #Python
使用Python处理BAM的方法
Sep 28 #Python
python版本单链表实现代码
Sep 28 #Python
python实现反转部分单向链表
Sep 27 #Python
You might like
php 数组使用详解 推荐
2011/06/02 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
python模块之StringIO使用示例
2015/04/08 Python
python 多线程重启方法
2019/02/18 Python
Python解析命令行读取参数之argparse模块
2019/07/26 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Python  Django 母版和继承解析
2019/08/09 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Python列表推导式实现代码实例
2020/09/09 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
华清池导游词
2015/02/02 职场文书
2015军训通讯稿大全
2015/07/18 职场文书