c语言结果为 HEAD->9->3->14->4->1->12->6->14->2 SUM=52代码
时间: 2024-09-09 10:15:43 浏览: 46
根据您给出的描述,看起来您想要实现一个链表,并打印出链表中所有节点的数据,并计算它们的总和。链表的节点数据似乎是以HEAD为头节点,并且包含一个整数值。下面是一个可能的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点
Node* createNode(int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode == NULL) {
exit(1); // 分配内存失败,退出程序
}
newNode->data = data;
newNode->next = NULL;
return newNode;
}
// 向链表末尾添加节点
void appendNode(Node** head, int data) {
Node* newNode = createNode(data);
if (*head == NULL) {
*head = newNode;
return;
}
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
// 打印链表
void printList(Node* head) {
Node* current = head;
while (current != NULL) {
printf("%d->", current->data);
current = current->next;
}
printf("NULL\n");
}
// 计算链表中所有节点的数据之和
int sumList(Node* head) {
int sum = 0;
Node* current = head;
while (current != NULL) {
sum += current->data;
current = current->next;
}
return sum;
}
int main() {
Node* HEAD = NULL; // 初始化链表为空
// 向链表中添加数据
appendNode(&HEAD, 9);
appendNode(&HEAD, 3);
appendNode(&HEAD, 14);
appendNode(&HEAD, 4);
appendNode(&HEAD, 1);
appendNode(&HEAD, 12);
appendNode(&HEAD, 6);
appendNode(&HEAD, 14);
appendNode(&HEAD, 2);
// 打印链表
printList(HEAD);
// 计算总和并打印
int sum = sumList(HEAD);
printf("SUM=%d\n", sum);
// 释放链表内存
Node* temp;
while (HEAD != NULL) {
temp = HEAD;
HEAD = HEAD->next;
free(temp);
}
return 0;
}
```
这段代码首先定义了一个链表节点的结构体`Node`,然后定义了几个函数来创建链表节点、向链表中添加节点、打印链表以及计算链表中所有节点数据的总和。`main`函数中创建了一个空链表,然后使用`appendNode`函数逐个添加了节点数据,接着打印了链表,并计算并打印了节点数据的总和。最后,释放了链表所占用的内存。
阅读全文