大話數據結構 - 順序表

線性表就是0個或多個數據元素的有限序列; 元素之間存在順序, 除開頭結尾之外, 每個元素有且僅有一個前驅元素, 後繼元素。線性表的順序存儲叫做順序表,簡單的說就是對數組進行封裝,使得更好的滿足需求。


1. 線性表的順序存儲結構
線性表的順序存儲結構指的是用一段地址連續的內存依次存儲線性表的數據元素
    
2. 線性表的鏈式存儲結構
鏈表


3. 順序表Python實現

class List:
    """
    線性表的順序存儲結構: 順序表
    
    數據成員:
        一個數組, 線性表的長度
        
    方法成員:
        1. 判斷線性表是否爲空
        2. 向線性表任意位置插入元素
        3. 查找線性表中是否存在某個值
        4. 刪除任意位置的一個元素
        5. 獲取列表中任意位置的元素
        6. 清空列表
    
    """
    def __init__(self, data):
        self.List = data
        self.length = self._get_list_length()
        
    def _get_list_length(self): return len(self.List)
    
    def is_empty(self):
        # 1. 判斷線性表是否爲空
        if len(self.List) == 0: return True
        else:   return False
    
    def insert(self, i, element):
        # 2. 向線性表第i個位置插入元素
        length = self.length
        if i not in range(length): raise(Exception("線性表長度不足"))
        for j in range(i, length):
            temp = self.List[j]
            self.List[j] = element
            element = temp
    
    def locate_ele(self, element):
        # 3. 對給定的某個值element定位, 如果存在返回-1
        length = self.length 
        for i in range(length):
            if self.List[i] == element:
                return i
        print("\n線性表中不存在{0}".format(element))
        return -1
            
    def delete_i_ele(self, i):
        # 4. 刪除第i個位置的元素
        length = self.length
        if i not in range(length): raise(Exception("線性表長度不足"))
        temp = []
        for j in range(i, length-1):
            temp.append(self.List[j + 1])
        self.List = self.List[0:j-1] + temp
    
    def get_i_ele(self, i):
        # 5. 獲取第i個位置的元素
        length = self.length
        if i not in range(length): raise(Exception("線性表長度不足"))
        return self.List[i]
    
    def clean(self): self.List = []


發佈了139 篇原創文章 · 獲贊 141 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章