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中的__init__()方法
May 02 Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
Python文件和流(实例讲解)
Sep 12 Python
Python科学画图代码分享
Nov 29 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python执行系统命令后获取返回值的几种方式集合
May 12 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
python可视化大屏库big_screen示例详解
Nov 23 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_odbc和php写的serach数据库程序
2006/10/09 PHP
php 抽象类的简单应用
2011/09/06 PHP
解析isset与is_null的区别
2013/08/09 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
2016/12/19 PHP
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
JavaScript Split()方法
2015/12/18 Javascript
Javascript中神奇的this
2016/01/20 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
HTTP状态码详解
2021/03/18 杂记
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
数学教师个人总结
2015/02/06 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
培训讲师开场白
2015/06/01 职场文书
生活小常识广播稿
2015/08/19 职场文书