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编写简单的HTML页面合并脚本
Jul 11 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
python实现微信远程控制电脑
Feb 22 Python
Python  unittest单元测试框架的使用
Sep 08 Python
Python网页正文转换语音文件的操作方法
Dec 09 Python
python hbase读取数据发送kafka的方法
Dec 27 Python
解决python replace函数替换无效问题
Jan 18 Python
python如何判断IP地址合法性
Apr 05 Python
iPython pylab模式启动方式
Apr 24 Python
Django REST 异常处理详解
Jul 15 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
Pytorch中的数据集划分&正则化方法
May 27 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代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
python DataFrame 修改列的顺序实例
2018/04/10 Python
Django框架视图函数设计示例
2019/07/29 Python
Python绘制动态水球图过程详解
2020/06/03 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
升职自荐书范文
2013/11/28 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
幼儿园老师寄语
2014/04/03 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
技术经济专业求职信
2014/09/03 职场文书
党员民主评议自我评价
2014/10/20 职场文书
劳模先进事迹材料
2014/12/24 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
利用Python实时获取steam特惠游戏数据
2022/06/25 Python
Go语言测试库testify使用学习
2022/07/23 Golang