c语言【问题描述】创建一个单链表,并求其最大值。 【输入形式】从键盘输入若干个整数,以空格分开,-1作为输入结束。 【输出形式】如果存在最大值,则输出;否则输出No answer! 【样例输入】65 12 6 78 5 -1 【样例输出】78
时间: 2023-12-03 21:04:29 浏览: 77
以下是该问题的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
int main() {
Node *head = NULL, *p, *max_node = NULL;
int data;
// 创建单链表
while (1) {
scanf("%d", &data);
if (data == -1) {
break;
}
p = (Node*) malloc(sizeof(Node));
p->data = data;
p->next = head;
head = p;
}
// 找到最大值节点
p = head;
while (p) {
if (!max_node || p->data > max_node->data) {
max_node = p;
}
p = p->next;
}
// 输出结果
if (max_node) {
printf("%d\n", max_node->data);
} else {
printf("No answer!\n");
}
// 释放内存
p = head;
while (p) {
head = p->next;
free(p);
p = head;
}
return 0;
}
```
该程序的思路为:
1. 使用一个循环读入若干个整数,以-1作为输入结束,同时创建单链表。
2. 遍历单链表,找到最大值节点。
3. 输出最大值节点的data字段,如果不存在最大值节点则输出"No answer!"。
4. 释放单链表的内存。
阅读全文