已知head指针指向一个已建立的单向链表。链表中每个节点包含数据域(data)和指针域(next)。定义一个函数求链表中所有节点的数据域之和。
时间: 2024-01-24 09:17:07 浏览: 28
可以通过遍历链表,将每个节点的数据域加起来得到所有节点数据域之和。下面是一个示例代码:
```c++
int sumLinkedList(ListNode* head) {
int sum = 0;
ListNode* p = head;
while (p != nullptr) {
sum += p->data;
p = p->next;
}
return sum;
}
```
其中,ListNode是链表节点的结构体,定义如下:
```c++
struct ListNode {
int data;
ListNode* next;
ListNode(int x) : data(x), next(nullptr) {}
};
```
函数sumLinkedList的参数head指向链表的头节点。变量sum用于记录累加的结果,p用于遍历链表。在每个循环中,先将当前节点的数据域加到sum中,再将指针p移动到下一个节点。最终返回sum即可。
相关问题
已知head指针指向一个已建立的单向链表。链表中每个节点包含数据域(data)和指针域(next)。定义一个函数求链表中所有节点的数据域之和
可以通过遍历链表来累加每个节点的数据域的值,最终得到所有节点数据域之和。具体实现如下:
```c++
int sumList(Node* head) {
int sum = 0;
Node* p = head;
while (p != NULL) {
sum += p->data;
p = p->next;
}
return sum;
}
```
其中,`Node`是链表节点的结构体,包含数据域`data`和指针域`next`。`head`是链表头指针,指向链表的第一个节点。`p`是遍历链表时使用的指针,初始值为`head`。`sum`是累加器,用于存储所有节点数据域之和。在循环中,首先将当前节点的数据域加到`sum`中,然后将指针向后移动到下一个节点,直到链表末尾。最后返回`sum`即可。
已知headz指针指向一个已建立的单向链表。链表中每个节点包含数据域(data)和指针域(next)。定义一个函数求链表中所有节点的数据域之和
可以使用一个循环遍历整个链表,将每个节点的数据域值累加起来即可求得链表中所有节点数据域之和。具体实现如下:
```c
int sumList(struct ListNode* headz) {
int sum = 0;
struct ListNode* cur = headz; // 定义一个指针指向链表头节点
while (cur != NULL) { // 循环遍历链表
sum += cur->data; // 将当前节点数据域值累加到 sum 变量中
cur = cur->next; // 将指针指向下一个节点
}
return sum; // 返回链表中所有节点数据域之和
}
```
其中,`struct ListNode` 是链表节点的结构体定义,包含数据域 `data` 和指针域 `next`,如下所示:
```c
struct ListNode {
int data;
struct ListNode* next;
};
```
需要注意的是,上述代码中的 `headz` 是链表的头节点指针,它指向链表中的第一个节点。如果链表为空,即 `headz` 指针为空,则函数直接返回 0。