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中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
[原创]使用豆瓣提供的国内pypi源
Jul 02 Python
python实现k-means聚类算法
Feb 23 Python
flask框架中勾子函数的使用详解
Aug 01 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
Python常见的pandas用法demo示例
Mar 16 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
Python-openCV读RGB通道图实例
Jan 17 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
Mar 13 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
Python字典实现伪切片功能
Oct 28 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 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将数据库导出成excel的方法
2010/05/07 PHP
php导入模块文件分享
2015/03/17 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
javascript IFrame 强制刷新代码
2009/07/23 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
JS中多层次排序算法的实现代码
2021/01/06 Javascript
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python实现决策树、随机森林的简单原理
2018/03/26 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
实习评语
2013/12/16 职场文书
12岁生日感言
2014/01/21 职场文书
八年级美术教学反思
2014/02/02 职场文书
趣味比赛活动方案
2014/02/15 职场文书
合作协议书范本
2014/04/17 职场文书
我的理想演讲稿
2014/04/30 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python