将线性表中所有非负数移到负数之前,保持非负数相对顺序不变
时间: 2024-10-10 22:06:31 浏览: 38
这个任务通常被称为“分离正负数”或“排序非负元素”,可以用数组或链表的数据结构来实现。这里提供一个简单的Python算法示例,假设输入是一个列表:
```python
def separate_positives_and_negatives(lst):
# 创建两个空列表,一个存储正数,一个存储负数
positives = []
negatives = []
# 遍历输入列表
for num in lst:
if num >= 0:
positives.append(num)
else:
negatives.append(num)
# 合并两个列表,保持原顺序,先正数后负数
return positives + negatives
# 测试
lst = [3, -1, 4, -2, 5, 0]
print(separate_positives_and_negatives(lst)) # 输出:[3, 4, 5, 0, -1, -2]
```
该算法遍历每个元素,如果它是非负数,则将其添加到`positives`列表,如果是负数,则添加到`negatives`列表。最后,将这两个列表合并返回。
相关问题
线性表按顺序存储删除所有负数
好的,针对您的问题,我可以给出以下的思路:
1. 从线性表的第一个元素开始,依次遍历每一个元素;
2. 如果当前元素的值为负数,则将其删除;
3. 删除时,可以将后面的元素逐个向前移动,覆盖当前元素;
4. 如果当前元素的值为非负数,则继续遍历下一个元素;
5. 直到遍历到线性表的末尾,完成所有负数的删除。
需要注意的是,在实现过程中,需要考虑到线性表中可能存在多个连续的负数,需要将它们一起删除,同时也需要注意对线性表长度的更新。
希望这个思路可以帮助到您。
阅读全文