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

追加直接往列表后面添加元素,插入是將插入位置后的元素全部往后面移動一個位置,然后再將這個元素放到指定的位置,將長度加1刪除是將該位置后面的元素往前移動,覆蓋該元素,然后再將長度減1
實現(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
說明:其實python中得list 本身是支持該種數(shù)據(jù)結(jié)構(gòu)的,可以直接使用。
總結(jié)
以上就是本文關(guān)于Python數(shù)據(jù)結(jié)構(gòu)之順序表的實現(xiàn)代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運算式
如有不足之處,歡迎留言指出。
相關(guān)文章
Jupyter notebook設置背景主題,字體大小及自動補全代碼的操作
這篇文章主要介紹了Jupyter notebook設置背景主題,字體大小及自動補全代碼的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
分析總結(jié)Python數(shù)據(jù)化運營KMeans聚類
本文主要以 Python 使用 Keans 進行聚類分析的簡單舉例應用介紹聚類分析,它是探索性數(shù)據(jù)挖掘的主要任務,也是統(tǒng)計數(shù)據(jù)分析的常用技術(shù),用于許多領(lǐng)域2021-08-08
Python分支結(jié)構(gòu)(switch)操作簡介
這篇文章主要介紹了Python分支結(jié)構(gòu)(switch)操作簡介,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
python中進程間通信及設置狀態(tài)量控制另一個進程
這篇文章主要介紹了python中進程間通信及設置狀態(tài)量控制另一個進程,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05
Python Jupyter Notebook顯示行數(shù)問題的解決
這篇文章主要介紹了Python Jupyter Notebook顯示行數(shù)問題的解決方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
django-rest-framework解析請求參數(shù)過程詳解
這篇文章主要介紹了django-rest-framework解析請求參數(shù)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07
Python+Selenium隨機生成手機驗證碼并檢查頁面上是否彈出重復手機號碼提示框
這篇文章主要介紹了Python+Selenium隨機生成手機驗證碼并檢查頁面上是否彈出重復手機號碼提示框,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

