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 相关文章推荐
win7 下搭建sublime的python开发环境的配置方法
Jun 18 Python
python抽象基类用法实例分析
Jun 04 Python
python比较两个列表大小的方法
Jul 11 Python
Python实现简单的获取图片爬虫功能示例
Jul 12 Python
python基础教程项目三之万能的XML
Apr 02 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
深入浅析Python中的迭代器
Jun 04 Python
Python namedtuple命名元组实现过程解析
Jan 08 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
基于python图书馆管理系统设计实例详解
Aug 05 Python
UI自动化定位常用实现方法代码示例
Oct 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分页类
2013/10/26 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
深入学习Python中的装饰器使用
2016/06/20 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python3操作Excel文件(读写)的简单实例
2019/09/02 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
python中return如何写
2020/06/18 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
金融专业毕业生推荐信
2013/11/26 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
《白鹅》教学反思
2014/04/13 职场文书
我的梦想演讲稿
2014/04/30 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
springboot实现string转json json里面带数组
2022/06/16 Java/Android
Nginx报404错误的详细解决方法
2022/07/23 Servers