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使用PyGame模块播放声音的方法
May 20 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
Python2.X/Python3.X中urllib库区别讲解
Dec 19 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python实现支付宝当面付(扫码支付)功能
May 30 Python
pandas 根据列的值选取所有行的示例
Nov 07 Python
Python基础学习之函数方法实例详解
Jun 18 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
序列化Python对象的方法
Aug 01 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
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
Python发送Email方法实例
2014/08/21 Python
python友情链接检查方法
2015/07/08 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
python如何在终端里面显示一张图片
2016/08/17 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
Python @property使用方法解析
2019/09/17 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
《挑山工》的教学反思
2014/02/16 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
学生会招新宣传语
2015/07/13 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
Python 中 Shutil 模块详情
2021/11/11 Python
i7 6700处理器相当于i5几代
2022/04/19 数码科技
Python开发五子棋小游戏
2022/04/28 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers