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获得linux下所有挂载点(mount points)的方法
Apr 29 Python
python实现机器人行走效果
Jan 29 Python
python的scikit-learn将特征转成one-hot特征的方法
Jul 10 Python
python取数作为临时极大值(极小值)的方法
Oct 15 Python
使用Python实现微信提醒备忘录功能
Dec 04 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
Python画图高斯分布的示例
Jul 10 Python
使用python爬取抖音视频列表信息
Jul 15 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
解决django后台管理界面添加中文内容乱码问题
Nov 15 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
django如何自定义manage.py管理命令
Apr 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在文件指定行中写入代码的方法
2012/05/23 PHP
使用PHP会话(Session)实现用户登陆功能
2013/06/29 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
xheditor与validate插件冲突的解决方案
2010/04/15 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
JavaScript面试技巧之数组的一些不low操作
2019/03/22 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
python 快速排序代码
2009/11/23 Python
python将文本转换成图片输出的方法
2015/04/28 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python实现屏保计时器的示例代码
2018/08/08 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python多进程间通信代码实例
2019/09/30 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
利用CSS3的transform做的动态时钟效果
2011/09/21 HTML / CSS
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
采购主管的岗位职责
2013/12/17 职场文书
网络优化专员求职信
2014/05/04 职场文书
新郎新娘答谢词
2015/01/04 职场文书
小升初自荐信范文
2015/03/05 职场文书
软件项目经理岗位职责
2015/04/01 职场文书
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB
什么是Python装饰器?如何定义和使用?
2022/04/11 Python
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers