删除带头结点的单链表中所有值为奇数值的结点
时间: 2023-10-18 17:09:59 浏览: 98
假设单链表的头节点为`head`,我们可以遍历整个链表,判断每个节点的值是否为奇数,如果是,就将它从链表中删除。由于链表有头节点,我们需要特别处理头节点。
具体实现如下:
```python
def delete_odd_nodes(head):
# 处理头节点
while head and head.val % 2 != 0:
head = head.next
# 遍历链表,删除奇数节点
curr = head
while curr and curr.next:
if curr.next.val % 2 != 0:
curr.next = curr.next.next
else:
curr = curr.next
return head
```
这里我们使用了两个指针,`head` 指向头节点,`curr` 指向当前节点。第一个 while 循环用于处理头节点,如果头节点的值为奇数,就将头节点指向下一个节点。接下来,我们遍历整个链表,如果当前节点的下一个节点的值为奇数,就将当前节点的 next 指向下一个节点的 next,即删除下一个节点,否则将当前节点指向下一个节点。
最后返回头节点。
相关问题
递归删除不带头结点的单链表中所有值为x的结点
递归删除不带头结点的单链表中所有值为x的结点,可以使用递归的方式实现。具体步骤如下:
1. 如果链表为空,直接返回。
2. 对于非空链表,递归删除其后续部分中值为x的结点。
3. 如果当前结点的值为x,则删除当前结点,即将其后继结点作为当前结点,继续递归删除后续部分中值为x的结点。
4. 如果当前结点的值不为x,则保留当前结点,将其后继结点作为当前结点,继续递归删除后续部分中值为x的结点。
代码实现如下:
```C++
void deleteNode(Node *node, int x) {
if (node == nullptr) { // 链表为空,直接返回
return;
}
if (node->val == x) { // 当前结点的值为x,删除当前结点
Node *temp = node;
node = node->next;
delete temp;
deleteNode(node, x); // 递归删除后续部分中值为x的结点
} else { // 当前结点的值不为x,保留当前结点
deleteNode(node->next, x); // 递归删除后续部分中值为x的结点
}
}
```
其中,`Node` 表示链表结点,包括一个整数值 `val` 和一个指向下一个结点的指针 `next`。使用时,调用 `deleteNode(head, x)` 即可删除不带头结点的单链表 `head` 中所有值为 `x` 的结点。
设计一个算法,删除一个带头结点单链表中所有值为x的结点。
可以使用双指针法,一个指针指向当前结点,另一个指针指向当前结点的前一个结点。遍历整个链表,如果当前结点的值等于x,则将前一个结点的next指针指向当前结点的next指针,然后删除当前结点。如果当前结点的值不等于x,则将两个指针都向后移动一位。最后返回头结点即可。
以下是示例代码:
```
void deleteNode(ListNode* head, int x) {
ListNode* prev = head;
ListNode* curr = head->next;
while (curr != nullptr) {
if (curr->val == x) {
prev->next = curr->next;
delete curr;
curr = prev->next;
} else {
prev = curr;
curr = curr->next;
}
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)