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中获取网页状态码的两个方法
Nov 03 Python
Python采用Django制作简易的知乎日报API
Aug 03 Python
详解python里的命名规范
Jul 16 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Django 数据库同步操作技巧详解
Jul 19 Python
Python的垃圾回收机制详解
Aug 28 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
Python合并多张图片成PDF
Jun 09 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
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
js中日期的加减法
2015/05/06 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
原生JS实现日历组件的示例代码
2017/09/22 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
小程序server请求微信服务器超时的解决方法
2019/05/21 Javascript
vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)
2020/02/01 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python类的动态修改的实例方法
2017/03/24 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
给男朋友的道歉信
2014/01/12 职场文书
三八活动策划方案
2014/08/17 职场文书
纪委书记群众路线整改措施思想汇报
2014/10/09 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
Jsonp劫持学习
2021/04/01 PHP
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL