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 时间处理datetime实例
Sep 06 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python如何实现守护进程的方法示例
Feb 08 Python
微信跳一跳python代码实现
Jan 05 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
为什么说Python可以实现所有的算法
Oct 04 Python
TensorFlow 多元函数的极值实例
Feb 10 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 Python
python使用glob检索文件的操作
May 20 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计划任务、定时执行任务的实现代码
2011/04/23 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
2010/11/16 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
Prototype框架详解
2015/11/25 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
React组件内事件传参实现tab切换的示例代码
2018/07/04 Javascript
微信小程序中时间戳和日期的相互转换问题
2018/07/09 Javascript
vue的过滤器filter实例详解
2018/09/17 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
python微信撤回监测代码
2019/04/29 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
神路信息Java面试题目
2013/03/31 面试题
实习生单位鉴定意见
2013/12/04 职场文书
小学生成长感言
2014/01/30 职场文书
《画》教学反思
2014/04/14 职场文书
青春雷锋观后感
2015/06/10 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
七年级作文之下雨天
2019/12/23 职场文书