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 相关文章推荐
深入讲解Java编程中类的生命周期
Feb 05 Python
Python中的数学运算操作符使用进阶
Jun 20 Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 Python
Python中单、双下划线的区别总结
Dec 01 Python
python @property的用法及含义全面解析
Feb 01 Python
python 日志增量抓取实现方法
Apr 28 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
详解Python 字符串相似性的几种度量方法
Aug 29 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
Jun 18 Python
如何清空python的变量
Jul 05 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利用cookies实现购物车的方法
2014/12/10 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
如何实现JS函数的重载
2006/09/22 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
学习JavaScript设计模式之享元模式
2016/01/18 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
自动适应iframe右边的高度
2016/12/22 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
简单的python后台管理程序
2017/04/13 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
Python聊天室程序(基础版)
2018/04/01 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
关于tensorflow的几种参数初始化方法小结
2020/01/04 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
Linux如何压缩可执行文件
2014/03/27 面试题
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
任课老师推荐信范文
2013/11/24 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
PyQt5实现多张图片显示并滚动
2021/06/11 Python
MySQL约束超详解
2021/09/04 MySQL
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫