def GetNo(self, e): # 查找第一个为e的元素的序号 i = 0 while i < self.size and self.data[i] != e: i += 1 # 查找元素e if (i >= self.size): # 未找到时返回-1 return -1 else: return i # 找到后返回其序号 def Insert(self, i, e): # 在线性表中序号i位置插入元素e def Delete(self, i): # 在线性表中删除序号i的元素 def display(self): # 输出顺序表 for i in range(0, self.size): print(self.data[i], end=' ') print()
时间: 2024-01-19 17:02:24 浏览: 26
这是一个顺序表的部分代码,其中的 `GetNo`、`Insert`、`Delete` 和 `display` 方法并没有实现。下面是这些方法的完整代码实现:
```python
class SqList:
def __init__(self):
self.initcapacity = 5
self.capacity = self.initcapacity
self.data = [None] * self.capacity
self.size = 0
def resize(self, newcapacity):
assert newcapacity >= 0
olddata = self.data
self.data = [None] * newcapacity
self.capacity = newcapacity
for i in range(self.size):
self.data[i] = olddata[i]
def CreateList(self, a):
for i in range(len(a)):
self.Add(a[i])
def Add(self, e):
if self.size == self.capacity:
self.resize(2 * self.capacity)
self.data[self.size] = e
self.size += 1
def getsize(self):
return self.size
def GetNo(self, e):
i = 0
while i < self.size and self.data[i] != e:
i += 1
if (i >= self.size):
return -1
else:
return i
def Insert(self, i, e):
if i < 0 or i > self.size:
raise Exception('Index out of range')
if self.size == self.capacity:
self.resize(2 * self.capacity)
for j in range(self.size - 1, i - 1, -1):
self.data[j + 1] = self.data[j]
self.data[i] = e
self.size += 1
def Delete(self, i):
if i < 0 or i >= self.size:
raise Exception('Index out of range')
for j in range(i, self.size - 1):
self.data[j] = self.data[j + 1]
self.size -= 1
def display(self):
for i in range(0, self.size):
print(self.data[i], end=' ')
print()
```
其中,`GetNo` 方法查找第一个为 `e` 的元素的序号,若未找到则返回 `-1`;`Insert` 方法在序号 `i` 处插入元素 `e`,若序号 `i` 超出当前顺序表的范围,则抛出 `Index out of range` 异常;`Delete` 方法删除序号 `i` 处的元素,若序号 `i` 超出当前顺序表的范围,则抛出 `Index out of range` 异常;`display` 方法输出顺序表的元素。