Python数据结构之顺序表的实现代码示例

作者:yupeng 时间:2021-02-22 07:13:08 

顺序表即线性表的顺序存储结构。它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的。比如,第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中实现k-means聚类算法详解

Python内存管理方式和垃圾回收算法解析

Python算法输出1-9数组形成的结果为100的所有运算式

如有不足之处,欢迎留言指出。

来源:https://www.cnblogs.com/yupeng/archive/2013/11/03/3405072.html

标签:python,数据结构,顺序表
0
投稿

猜你喜欢

  • echarts折线图流动特效的实现全过程(非平滑曲线)

    2024-05-02 16:28:55
  • HTML和SEO基础知识:H标签全透视

    2010-09-21 16:45:00
  • python 爬取小说并下载的示例

    2023-08-24 19:31:49
  • Python实现连接FTP并下载文件夹

    2021-02-28 01:56:26
  • python网络爬虫学习笔记(1)

    2023-12-24 04:08:16
  • 对python中return与yield的区别详解

    2022-10-19 00:47:33
  • 如何将python代码打包成pip包(可以pip install)

    2021-08-23 21:38:10
  • Python标准库之sqlite3使用实例

    2023-08-12 18:44:05
  • sqlserver获取各种形式的时间

    2024-01-20 17:33:50
  • Python3实现自定义比较排序/运算符

    2023-04-15 23:32:25
  • 分享一下SQL Server执行动态SQL的正确方式

    2024-01-14 00:17:56
  • 使用php-timeit估计php函数的执行时间

    2023-10-07 19:56:50
  • 用javascript实现简单计算器

    2024-04-23 09:26:33
  • python pandas写入excel文件的方法示例

    2022-02-27 05:04:14
  • Python中使用装饰器和元编程实现结构体类实例

    2023-04-17 17:44:36
  • Python语言异常处理测试过程解析

    2022-10-30 01:29:05
  • 网站升级兼容firefox经验小谈

    2007-10-28 20:28:00
  • Python Scapy随心所欲研究TCP协议栈

    2023-06-10 23:12:29
  • mysql 月份查询该月有付款的数据

    2024-01-19 08:37:37
  • python对配置文件.ini进行增删改查操作的方法示例

    2023-10-25 05:56:13
  • asp之家 网络编程 m.aspxhome.com