已知带头结点的单链表LinkList *H; 其中数据元素类型为int,用C语言函数实现算法:将该单链表的长度写入头节点的数据域中。
时间: 2024-10-17 11:09:43 浏览: 33
【数据结构作业二】写出单链表结点的结构体类型定义及查找、插入、删除算法,并以单链表作存储结。。。 定义线性表节点的结构.pdf
在C语言中,要实现这个功能,首先需要遍历链表,计算其长度,然后更新头节点的数据域。假设链表的结构如下:
```c
typedef struct ListNode {
int data;
struct ListNode* next;
} ListNode;
```
这里是一个简单的函数,它会递归地计算链表的长度,并在头节点处存储结果:
```c
void setLength(ListNode* H) {
if (H == NULL) { // 链表为空
H->data = 0;
return;
} else {
H->data = 1 + setLength(H->next); // 递归处理下一个节点
}
}
```
如果你想手动实现非递归版本,可以使用迭代:
```c
void setLength(ListNode* H) {
int length = 0;
ListNode* current = H;
while (current != NULL) {
length++;
current = current->next;
}
H->data = length;
}
```
以上两个函数都可以完成链表长度的获取并存入头节点。
阅读全文