寻找单链表中奇数并将奇数输出;寻找偶数并将偶数输出
时间: 2023-09-17 09:05:28 浏览: 129
单链表可找出最小值点
### 回答1:
这是一个编程类的问题,可以回答。可以用以下 C++ 代码实现:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void printOdd(ListNode *head) {
while (head) {
if (head->val % 2 == 1) {
cout << head->val << " ";
}
head = head->next;
}
}
void printEven(ListNode *head) {
while (head) {
if (head->val % 2 == 0) {
cout << head->val << " ";
}
head = head->next;
}
}
其中,ListNode 是链表的结构体,printOdd() 函数可以输出链表中的奇数,printEven() 函数可以输出链表中的偶数。
### 回答2:
寻找单链表中的奇数并将奇数输出的方法如下:
1. 遍历单链表中的每个节点。
2. 对于每个节点,检查节点的值是否为奇数。
3. 如果节点的值是奇数,将其输出。
寻找单链表中的偶数并将偶数输出的方法如下:
1. 遍历单链表中的每个节点。
2. 对于每个节点,检查节点的值是否为偶数。
3. 如果节点的值是偶数,将其输出。
例子说明:
假设我们有一个单链表,包含以下节点:
1 -> 2 -> 3 -> 4 -> 5
通过上述方法,我们可以找到并输出单链表中的奇数:
1 -> 3 -> 5
也可以找到并输出单链表中的偶数:
2 -> 4
### 回答3:
要解决这个问题,我们需要遍历单链表中的每个节点。首先,我们可以创建两个新的单链表,一个用来存储奇数,另一个用来存储偶数。然后,我们遍历单链表的每个节点,判断该节点的值是奇数还是偶数。如果是奇数,则将该节点添加到奇数链表中;如果是偶数,则将该节点添加到偶数链表中。
下面是一个示例代码实现:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def find_odd_even(head):
odd_list = ListNode() # 奇数链表的头节点
even_list = ListNode() # 偶数链表的头节点
odd_ptr = odd_list
even_ptr = even_list
node = head
while node:
if node.val % 2 == 0: # 判断节点值的奇偶性
even_ptr.next = node
even_ptr = even_ptr.next
else:
odd_ptr.next = node
odd_ptr = odd_ptr.next
node = node.next
even_ptr.next = None # 断开偶数链表的最后一个节点的连接
odd_ptr.next = even_list.next # 将偶数链表连接到奇数链表的后面
return odd_list.next # 返回奇数链表的头节点
# 创建一个示例链表 1->2->3->4->5->None
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)
result = find_odd_even(head)
while result:
print(result.val) # 输出奇数链表的值
result = result.next
```
以上代码输出的结果将是 `1 3 5`,即将奇数输出。
如果要输出偶数,只需修改一行代码即可,将 `if node.val % 2 == 0` 中的等号改为不等号即可,即 `if node.val % 2 != 0`。
阅读全文