国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)代碼示例

2020-02-16 10:42:45
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

順序表即線性表的順序存儲(chǔ)結(jié)構(gòu)。它是通過(guò)一組地址連續(xù)的存儲(chǔ)單元對(duì)線性表中的數(shù)據(jù)進(jìn)行存儲(chǔ)的,相鄰的兩個(gè)元素在物理位置上也是相鄰的。比如,第1個(gè)元素是存儲(chǔ)在線性表的起始位置LOC(1),那么第i個(gè)元素即是存儲(chǔ)在LOC(1)+(i-1)*sizeof(ElemType)位置上,其中sizeof(ElemType)表示每一個(gè)元素所占的空間。

追加直接往列表后面添加元素,插入是將插入位置后的元素全部往后面移動(dòng)一個(gè)位置,然后再將這個(gè)元素放到指定的位置,將長(zhǎng)度加1刪除是將該位置后面的元素往前移動(dòng),覆蓋該元素,然后再將長(zhǎng)度減1 

實(shí)現(xiàn)代碼:

#!/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 -= 1sl = SeqList(5)print sl.datasl.append(5)print sl.datasl.insert(6,10)print sl.datasl.delete(5)print sl.data            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 溆浦县| 清流县| 兴和县| 阿坝县| 白沙| 宾川县| 依兰县| 吉木乃县| 汝城县| 府谷县| 西盟| 廊坊市| 会同县| 山阴县| 廉江市| 洪雅县| 衡东县| 米脂县| 高要市| 铁岭市| 柯坪县| 凯里市| 德化县| 舞钢市| 古田县| 梨树县| 乌审旗| 保康县| 景谷| 绥德县| 获嘉县| 四川省| 乐东| 光山县| 郑州市| 根河市| 高要市| 禄丰县| 周至县| 黑山县| 平果县|