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中stdout输出不缓存的设置方法
May 29 Python
Python实现发送email的几种常用方法
Aug 18 Python
详解Django中的权限和组以及消息
Jul 23 Python
Python手机号码归属地查询代码
May 04 Python
python如何重载模块实例解析
Jan 25 Python
实用自动化运维Python脚本分享
Jun 04 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
python中嵌套函数的实操步骤
Feb 27 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
python 子类调用父类的构造函数实例
Mar 12 Python
Python基础之tkinter图形化界面学习
Apr 29 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 str_pad 函数用法简介
2009/07/11 PHP
php for 循环语句使用方法详细说明
2010/05/09 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
js仿淘宝和百度文库的评分功能
2016/05/15 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python给你的头像加上圣诞帽
2018/01/04 Python
python中数据库like模糊查询方式
2020/03/02 Python
Python-openCV开运算实例
2020/07/05 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
Python如何重新加载模块
2020/07/29 Python
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
办护照工作证明范本
2014/01/14 职场文书
火锅店营销方案
2014/02/26 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
大学英语专业求职信
2014/06/21 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
使用feign服务调用添加Header参数
2021/06/23 Java/Android
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL