写一算法Listlength(L),求单链表的结点数目int listlength(L)
时间: 2024-10-14 21:07:32 浏览: 36
求线性表的长度ListLength(L)-数据结构线性表
为了计算单链表中节点的数量,你可以使用迭代或递归的方式编写一个简单的算法。这里是一个基于迭代的示例:
```c++
// 定义链表节点结构体
typedef struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {} // 构造函数
} ListNode;
// 列表长度算法
int listLength(ListNode* L) {
if (L == NULL) { // 链表为空,长度为0
return 0;
}
int length = 1; // 初始化长度为1,因为头节点存在
ListNode* current = L; // 当前节点指针
while (current->next != NULL) { // 遍历直到遇到NULL
current = current->next; // 移动到下一个节点
length++; // 每次遍历增加长度
}
return length;
}
```
在这个算法中,我们从头节点开始,每次移动`current`指针并检查它指向的下一个节点是否为`NULL`。如果`next`不是`NULL`,就继续遍历;当`next`为`NULL`时,说明已经到达了链表的末尾,返回当前长度。
阅读全文