C语言 高阶-5 链表——统计节点个数 定义函数,遍历一个不带头结点的链表,统计链表上的节点个数
时间: 2023-07-11 10:46:17 浏览: 195
好的,根据您的要求,我理解您需要一个 C 语言函数,能够统计一个不带头结点的链表上的节点个数。那么,以下是一个示例代码:
```c
int countNodes(struct ListNode* head) {
int count = 0;
struct ListNode* cur = head;
while (cur != NULL) {
count++;
cur = cur->next;
}
return count;
}
```
在这个示例函数中,我们使用了一个计数器变量 count,以及一个指向当前节点的指针 cur。首先,将计数器初始化为 0,然后将 cur 指向链表的头结点 head,然后开始循环遍历链表。每循环一次,计数器加 1,然后将 cur 指向下一个节点,直到 cur 指向 NULL 表示已经遍历完整个链表,此时返回计数器的值即可。
需要注意的是,这个函数的参数类型是 struct ListNode*,表示链表的头指针。因此,在使用这个函数时,需要先构建一个链表,并将链表的头指针作为参数传入。
相关问题
高阶-5 链表——统计节点个数 定义函数,遍历一个不带头结点的链表,统计链表上的节点个数
好的,根据您的要求,我理解您需要一个 C++ 函数,能够统计一个不带头结点的链表上的节点个数。那么,以下是一个示例代码:
```cpp
int countNodes(ListNode* head) {
int count = 0;
ListNode* cur = head;
while (cur != nullptr) {
count++;
cur = cur->next;
}
return count;
}
```
在这个示例函数中,我们使用了一个计数器变量 count,以及一个指向当前节点的指针 cur。首先,将计数器初始化为 0,然后将 cur 指向链表的头结点 head,然后开始循环遍历链表。每循环一次,计数器加 1,然后将 cur 指向下一个节点,直到 cur 指向 nullptr 表示已经遍历完整个链表,此时返回计数器的值即可。
需要注意的是,这个函数的参数类型是 ListNode*,表示链表的头指针。因此,在使用这个函数时,需要先构建一个链表,并将链表的头指针作为参数传入。
高阶-1 链表-查找链表最后节点 C语言、
在C语言中,高阶数据结构如链表是一种动态数据结构,其中每个节点通常包含数据域和指向下一个节点的指针。如果需要查找链表的最后一个节点,由于常规链表没有直接提供这个信息,我们通常会采用迭代或者递归的方式来实现。
**迭代法**:
遍历整个链表直到遇到NULL,这是最后一个节点的前一个节点。因为链表的最后一个节点的next指针通常是NULL,所以它的前一个节点就是最后一个节点。下面是一个简单的示例:
```c
struct Node {
int data;
struct Node* next;
};
struct Node* findLastNode(struct Node* head) {
if (head == NULL) {
return NULL;
}
struct Node* current = head;
while (current->next != NULL) {
current = current->next;
}
return current;
}
```
**递归法**:
虽然递归不是寻找链表最后一节点的理想选择,因为它可能会导致栈溢出,但在教学或某些特定场景下可以尝试。以下是递归版本:
```c
struct Node* findLastNodeRecursive(struct Node* head) {
if (head == NULL || head->next == NULL) {
return head;
}
return findLastNodeRecursive(head->next);
}
```
在这两个函数之后,你可以通过 `lastNode = findLastNode(head);` 获取到链表的最后一个节点。
阅读全文