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实现从订阅源下载图片的方法
Mar 11 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
利用Pandas 创建空的DataFrame方法
Apr 08 Python
python binascii 进制转换实例
Jun 12 Python
详解python中index()、find()方法
Aug 29 Python
python队列原理及实现方法示例
Nov 27 Python
Python修改列表值问题解决方案
Mar 06 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
Python Tkinter实例——模拟掷骰子
Oct 24 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
用Python提取PDF表格的方法
Apr 11 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
PHP+javascript模拟Matrix画面
2006/10/09 PHP
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
php常用hash加密函数
2014/11/22 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
javascript中的new使用
2010/03/20 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
jquery使用on绑定a标签无效 只能用live解决
2016/06/02 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
Vue + Element UI图片上传控件使用详解
2019/08/20 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
JS实现分页导航效果
2020/02/19 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
Python 调用Java实例详解
2017/06/02 Python
django输出html内容的实例
2018/05/27 Python
浅谈python标准库--functools.partial
2019/03/13 Python
python scrapy爬虫代码及填坑
2019/08/12 Python
Python 如何批量更新已安装的库
2020/05/26 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
类如何去实现接口
2013/12/19 面试题
自我鉴定 电子商务专业
2014/01/30 职场文书
商业房地产广告语
2014/03/13 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
心理学专业求职信
2014/06/16 职场文书
检讨书格式
2019/04/25 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js