对存放整数的顺序表,设计函数实现以下操作: (1)从顺序表中删除具有最小值的元素(假设顺序表中元素都不相同),并由函数返回被删元素的值,空出的位置由最后一个元素填补。 (2)从顺序表中删除与给定值e
时间: 2024-09-19 13:04:02 浏览: 53
定位顺序表中最大值和最小值
为了实现这样的功能,我们可以设计两个函数,分别对应于删除最小值和删除特定值的操作。这里是一个基于Python语言的基本实现:
```python
class SinglyLinkedListNode:
def __init__(self, value):
self.value = value
self.next = None
class SinglyLinkedList:
def __init__(self):
self.head = None
self.tail = None
# 插入元素到链表尾部
def append(self, value):
if not self.head:
self.head = SinglyLinkedListNode(value)
self.tail = self.head
else:
self.tail.next = SinglyLinkedListNode(value)
self.tail = self.tail.next
# 删除最小值并返回其值
def delete_min(self):
if not self.head:
raise Exception("List is empty")
min_value = self.head.value
min_node = self.head
while min_node.next and min_node.next.value < min_value:
min_value = min_node.next.value
min_node = min_node.next
if min_node != self.head: # 如果找到最小值,删除它
min_node.next = min_node.next.next
if not min_node.next: # 如果删除了头节点,更新头节点
self.head = self.head.next
return min_value
# 删除特定值的元素
def delete_element(self, e):
current = self.head
previous = None
while current:
if current.value == e:
if previous is None:
self.head = current.next
else:
previous.next = current.next
break
previous = current
current = current.next
# 示例操作
sll = SinglyLinkedList()
sll.append(5)
sll.append(3)
sll.append(7)
min_val = sll.delete_min() # 返回3
print("Min value removed:", min_val)
element_to_delete = 5
sll.delete_element(element_to_delete) # 删除5
```
在这个实现中,`delete_min()`函数遍历链表找到最小值,然后通过调整指针删除该节点。`delete_element()`则是在链表中查找给定值,并移除匹配项。
阅读全文