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批量提取word内信息
Aug 09 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
scrapy爬虫完整实例
Jan 25 Python
对Python 网络设备巡检脚本的实例讲解
Apr 22 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
Apr 14 Python
使用Python下载抖音各大V视频的思路详解
Feb 06 Python
pytorch中的numel函数用法说明
May 13 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 php mvc框架 中国网站
2008/05/26 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
详解Vue中的MVVM原理和实现方法
2020/07/15 Javascript
Google开源的Python格式化工具YAPF的安装和使用教程
2016/05/31 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
python实现黑客字幕雨效果
2018/06/21 Python
用python做游戏的细节详解
2019/06/25 Python
python新手学习可变和不可变对象
2020/06/11 Python
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
村居抓节水倡议书
2014/05/19 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
护士工作失误检讨书
2014/09/14 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
学术会议邀请函
2015/01/30 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang