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使用metaclass实现Singleton模式的方法
May 05 Python
浅谈python中set使用
Jun 30 Python
PyCharm在win10的64位系统安装实例
Nov 26 Python
vue.js实现输入框输入值内容实时响应变化示例
Jul 07 Python
Python 使用PIL中的resize进行缩放的实例讲解
Aug 03 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
在Python中定义一个常量的方法
Nov 10 Python
解决python文件双击运行秒退的问题
Jun 24 Python
利用anaconda作为python的依赖库管理方法
Aug 13 Python
Python socket服务常用操作代码实例
Jun 22 Python
Python机器学习三大件之一numpy
May 10 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+redis实现微博的拉模型案例详解
2019/07/10 PHP
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
在vue项目中使用Nprogress.js进度条的方法
2018/01/31 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
python 对象和json互相转换方法
2018/03/22 Python
python list转置和前后反转的例子
2019/08/26 Python
使用Python的turtle模块画国旗
2019/09/24 Python
python中setuptools的作用是什么
2020/06/19 Python
详解Python 循环嵌套
2020/07/09 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
公司联欢晚会主持词
2014/03/22 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
八年级英语教学反思
2016/02/15 职场文书
教你用python控制安卓手机
2021/05/13 Python