3.写一个函数,在单向链表中搜索元素x的算法。 如果x在表里,则输出它在表中的序号,否则,将 ×插在表尾。
时间: 2024-09-13 18:10:37 浏览: 40
在单向链表中搜索一个元素并根据情况处理,可以分解为两个主要步骤:首先是遍历链表以查找元素,然后是根据是否找到元素来执行不同的操作。下面是一个可能的算法实现,首先定义链表节点和基本的操作函数,然后实现搜索和插入的函数:
```python
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def search_and_insert(head, x):
# 初始化当前节点为链表头部
current = head
# 初始化计数器,从1开始计数
index = 1
# 遍历链表
while current is not None:
# 如果当前节点的值等于x,则输出索引
if current.value == x:
print(f"元素{x}在表中的序号为:{index}")
return
# 移动到下一个节点
current = current.next
# 索引加1
index += 1
# 如果没有找到元素x,则将其添加到链表尾部
tail = head
while tail.next is not None:
tail = tail.next
tail.next = ListNode(x)
print(f"元素{x}未在表中找到,已插入表尾。")
# 示例使用
# 创建链表 1 -> 2 -> 3
head = ListNode(1, ListNode(2, ListNode(3)))
search_and_insert(head, 2) # 输出:元素2在表中的序号为:2
search_and_insert(head, 4) # 输出:元素4未在表中找到,已插入表尾。
```
在上述代码中,`search_and_insert` 函数首先遍历链表寻找元素 x。如果找到,就输出其在链表中的位置。如果没有找到,就在链表的尾部创建一个新的节点,并将 x 的值赋给这个新节点。
阅读全文