写出判断链表中值为x的结点个数的代码
时间: 2023-03-20 10:00:40 浏览: 127
以下是用Python实现判断链表中值为x的结点个数的代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def count_node(head, x):
count = 0
while head:
if head.val == x:
count += 1
head = head.next
return count
```
上述代码中,我们定义了一个 `ListNode` 类来表示链表中的结点。`count_node` 函数用于计算链表中值为 `x` 的结点个数。该函数通过遍历链表,依次检查每个结点的值是否为 `x`,如果是则计数器加 1。最后返回计数器的值即可。
相关问题
递归删除不带头结点的链表中值为x的结点
递归删除不带头结点的链表中值为x的结点,可以分为两种情况:
1. 如果当前链表为空,直接返回空链表。
2. 如果当前链表不为空,则需要递归处理当前链表的子链表。如果当前结点的值等于x,则应该将当前结点删除,并返回子链表。否则,应该保留当前结点,并递归处理子链表。
以下是一个示例代码实现:
```
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* deleteNode(ListNode* head, int x) {
if (!head) {
return NULL;
}
if (head->val == x) {
ListNode *temp = head;
head = head->next;
delete temp;
return deleteNode(head, x);
} else {
head->next = deleteNode(head->next, x);
return head;
}
}
```
在上面的代码中,我们首先判断当前链表是否为空。如果为空,直接返回空链表。否则,判断当前结点的值是否等于x。如果等于x,则将当前结点删除,并返回子链表;否则,保留当前结点,并递归处理子链表。最终返回处理后的链表头指针。
返回链表中值等于e的第一个结点的地址
以下是Python代码实现:
```python
def find_first_node(head, e):
curr = head
while curr is not None:
if curr.val == e:
return curr
curr = curr.next
return None
```
其中,参数head是链表的头结点,参数e是要查找的值。函数会从链表的头结点开始遍历,如果找到值等于e的结点,则返回该结点的地址;否则返回None。
阅读全文