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 30 Python
python利用datetime模块计算时间差
Aug 04 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
python3库numpy数组属性的查看方法
Apr 17 Python
在CMD命令行中运行python脚本的方法
May 12 Python
Python走楼梯问题解决方法示例
Jul 25 Python
详解python tkinter教程-事件绑定
Mar 28 Python
Python 编程速成(推荐)
Apr 15 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 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/05/01 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
js操作table示例(个人心得)
2013/11/29 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
js实现将选中值累加到文本框的方法
2015/08/12 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
JS实现返回上一页并刷新页面的方法分析
2019/07/16 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
JavaScript如何实现监听键盘输入和鼠标监点击
2020/07/20 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python实现命令行通讯录实例教程
2016/08/18 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
对Django中内置的User模型实例详解
2019/08/16 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
python3.8下载及安装步骤详解
2020/01/15 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
2014年政务公开工作总结
2014/12/09 职场文书
检察院起诉意见书
2015/05/20 职场文书
儿子满月酒致辞
2015/07/29 职场文书
小学班主任教育随笔
2015/08/15 职场文书
学生安全责任协议书
2016/03/22 职场文书
2019广播稿怎么写
2019/04/17 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL