做招聘網(wǎng)站經(jīng)營范圍寧波seo推廣
一、動態(tài)數(shù)組的實現(xiàn)
- ????????首先,我們需要創(chuàng)建一個
DynamicArray
類,該類將管理我們的動態(tài)數(shù)組。- ????????動態(tài)數(shù)組能夠動態(tài)地調整其大小,以容納更多的元素。
目錄
一、動態(tài)數(shù)組的實現(xiàn)
代碼示例:
二、序列隊列的實現(xiàn)
接下來,我們基于DynamicArray類實現(xiàn)SeqQueue類。序列隊列將提供標準的隊列操作,如入隊、出隊、檢查隊列是否為空等。
-
代碼示例:
class DynamicArray: def __init__(self, initial_capacity=10): """初始化動態(tài)數(shù)組,設置初始容量""" self.capacity = initial_capacity self.size = 0 self.array = [None] * self.capacity def is_empty(self): """檢查動態(tài)數(shù)組是否為空""" return self.size == 0 def is_full(self): """檢查動態(tài)數(shù)組是否已滿""" return self.size == self.capacity def resize(self, new_capacity): """調整動態(tài)數(shù)組的大小""" new_array = [None] * new_capacity for i in range(self.size): new_array[i] = self.array[i] self.array = new_array self.capacity = new_capacity def insert(self, index, data): """在指定索引處插入數(shù)據(jù)""" if self.is_full(): self.resize(self.capacity * 2) # 擴容 if index < 0 or index > self.size: raise IndexError("Index out of range") for i in range(self.size, index, -1): self.array[i] = self.array[i - 1] self.array[index] = data self.size += 1 def remove(self, index): """移除指定索引處的數(shù)據(jù)""" if self.is_empty(): raise IndexError("Cannot remove from an empty array") if index < 0 or index >= self.size: raise IndexError("Index out of range") for i in range(index, self.size - 1): self.array[i] = self.array[i + 1] self.array[self.size - 1] = None self.size -= 1 if self.size > 0 and self.size == self.capacity // 4: # 縮容 self.resize(self.capacity // 2) def get(self, index): """獲取指定索引處的數(shù)據(jù)""" if index < 0 or index >= self.size: raise IndexError("Index out of range") return self.array[index] def __len__(self): """返回動態(tài)數(shù)組的大小""" return self.size
二、序列隊列的實現(xiàn)
-
接下來,我們基于
DynamicArray
類實現(xiàn)SeqQueue
類。序列隊列將提供標準的隊列操作,如入隊、出隊、檢查隊列是否為空等。
class SeqQueue: def __init__(self, initial_capacity=10): """初始化序列隊列,設置初始容量""" self.queue = DynamicArray(initial_capacity) def is_empty(self): """檢查隊列是否為空""" return self.queue.is_empty() def enqueue(self, item): """入隊操作,將元素添加到隊列末尾""" self.queue.insert(self.queue.size, item) def dequeue(self): """出隊操作,移除并返回隊列的第一個元素""" if self.is_empty(): raise IndexError("Dequeue from an empty queue") return self.queue.remove(0) def size(self): """返回隊列中元素的數(shù)量""" return len(self.queue) def front(self): """返回隊列的第一個元素,但不移除它""" if self.is_empty(): raise IndexError("Queue is empty") return self.queue.get(0) def back(self): """返回隊列的最后一個元素,但不移除它""" if self.is_empty(): raise IndexError("Queue is empty") return self.queue.get(self.queue.size - 1)def destroy(self): self.queue = None # 使用示例 max_size = 10 seq_queue = SeqQueue(max_size) # 入隊 seq_queue.push("data1") seq_queue.push("data2") # 獲取隊首元素 print(seq_queue.front()) # 輸出: data1 # 獲取隊尾元素 print(seq_queue.back()) # 輸出: data2 # 出隊 seq_queue.pop() # 再次獲取隊首元素 print(seq_queue.front()) # 輸出: data2 # 銷毀隊列 seq_queue.destroy()
?????????在這個文件中,
DynamicArray
類定義了一個動態(tài)數(shù)組,而SeqQueue
類則定義了一個基于DynamicArray
的序列隊列。您可以直接運行這個文件來測試這些類的功能。請注意,這個示例假設您希望隊列在出隊時返回被移除的元素,所以pop
方法現(xiàn)在返回被移除的元素。如果您不希望這樣,您可以相應地調整pop
方法的實現(xiàn)。