Python数据结构之顺序表的实现代码示例


Posted in Python onNovember 15, 2017

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

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之编写类之四再论继承
Oct 11 Python
python difflib模块示例讲解
Sep 13 Python
python2.7 json 转换日期的处理的示例
Mar 07 Python
python3实现随机数
Jun 25 Python
Django框架的使用教程路由请求响应的方法
Jul 03 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
flask应用部署到服务器的方法
Jul 12 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
python解析命令行参数的三种方法详解
Nov 29 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
python安装读取grib库总结(推荐)
Jun 24 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 Python
Django中ORM表的创建和增删改查方法示例
Nov 15 #Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 #Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 #Python
Python中turtle作图示例
Nov 15 #Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 #Python
使用Python的turtle模块画图的方法
Nov 15 #Python
python绘制铅球的运行轨迹代码分享
Nov 14 #Python
You might like
php连接数据库代码应用分析
2011/05/29 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
解析yii数据库的增删查改
2013/06/20 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
介绍Python中的__future__模块
2015/04/27 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
python实现简单多人聊天室
2018/12/11 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
python统计中文字符数量的两种方法
2019/01/31 Python
Django对models里的objects的使用详解
2019/08/17 Python
python3 实现调用串口功能
2019/12/26 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
乔迁宴答谢词
2014/01/21 职场文书
统计系教授推荐信
2014/02/28 职场文书
法人授权委托书范本
2014/04/04 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
python本地文件服务器实例教程
2021/05/02 Python
Python 中random 库的详细使用
2021/06/03 Python
对讲机的最大通讯距离是多少
2022/02/18 无线电
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers