Python數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)代碼示例
順序表即線性表的順序存儲(chǔ)結(jié)構(gòu)。它是通過一組地址連續(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 -= 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
說明:其實(shí)python中得list 本身是支持該種數(shù)據(jù)結(jié)構(gòu)的,可以直接使用。
總結(jié)
以上就是本文關(guān)于Python數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
python中實(shí)現(xiàn)k-means聚類算法詳解
Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式
如有不足之處,歡迎留言指出。
相關(guān)文章
解決Python3.7.0 SSL低版本導(dǎo)致Pip無法使用問題
這篇文章主要介紹了解決Python3.7.0 SSL低版本導(dǎo)致Pip無法使用問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Python matplotlib畫圖實(shí)例之繪制擁有彩條的圖表
這篇文章主要介紹了Python matplotlib畫圖實(shí)例之繪制擁有彩條的圖表,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12
python 實(shí)現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url
今天小編就為大家分享一篇python 實(shí)現(xiàn)圖片上傳接口開發(fā) 并生成可以訪問的圖片url,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python itchat實(shí)現(xiàn)微信自動(dòng)回復(fù)的示例代碼
本篇文章主要介紹了python itchat實(shí)現(xiàn)微信自動(dòng)回復(fù)的示例代碼,可以實(shí)現(xiàn)微信自動(dòng)回復(fù),有興趣的可以了解一下2017-08-08
python格式化輸出format()函數(shù)常見用法和格式選項(xiàng)
這篇文章主要介紹了python格式化輸出format()函數(shù)常見用法和格式選項(xiàng)的相關(guān)資料,format方法是一種強(qiáng)大的字符串格式化工具,它允許你將變量或表達(dá)式插入到字符串中,并根據(jù)需要進(jìn)行格式化,需要的朋友可以參考下2025-03-03
pandas如何統(tǒng)計(jì)某一列或某一行的缺失值數(shù)目
這篇文章主要介紹了pandas如何統(tǒng)計(jì)某一列或某一行的缺失值數(shù)目,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Python腳本實(shí)現(xiàn)datax全量同步mysql到hive
這篇文章主要和大家分享一下mysql全量同步到hive自動(dòng)生成json文件的python腳本,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參加一下2024-10-10
python 實(shí)現(xiàn)圍棋游戲(純tkinter gui)
這篇文章主要介紹了python 如何實(shí)現(xiàn)圍棋游戲,幫助大家利用tkinter制作圖形界面程序,感興趣的朋友可以了解下2020-11-11

