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比较2个xml内容的方法
May 11 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
Python使用Pandas对csv文件进行数据处理的方法
Aug 01 Python
Django用户认证系统 Web请求中的认证解析
Aug 02 Python
Python利用requests模块下载图片实例代码
Aug 12 Python
详解从Django Allauth中进行登录改造小结
Dec 18 Python
Python内存映射文件读写方式
Apr 24 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
python3实现简单飞机大战
Nov 29 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表的最简单、最快的方法(不用插件)
2014/05/10 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
2010/03/07 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
Python函数中定义参数的四种方式
2014/11/30 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
Python工程师面试题 与Python基础语法相关
2016/01/14 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
大学军训通讯稿
2014/01/13 职场文书
电视节目策划方案
2014/05/16 职场文书
2015年安全生产目标责任书
2015/01/29 职场文书
年底个人总结范文
2015/03/10 职场文书
健康证明
2015/06/19 职场文书
推广普通话的宣传语
2015/07/13 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
关于使用Redisson订阅数问题
2022/01/18 Redis
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers