"1.(16分)输出最贵的书籍信息:结构体类型定义如下:struct stu{char name[20];float price;struct stu *next;} ;要求:(1)编写自定义函数创建链表,输入书名和价格。输入Y继续创建,输入其他字符结束创建。(2)编写自定义函数输出最贵的书籍信息。(3)编写自定义函数释放链表内存。**输入提示:\"请输入书名价格:\\n\"(循环)**输入格式:\"%s %f\"**是否继续创建的提示:\"是否继续输入,按Y键继续输入,其他键就结束.\\n\"**输出提示:\"result:\\n\"**输出格式:\"%s %.2f\\n\"程序运行示例:请输入书名价格:Algorithms 105是否继续输入,按Y键继续输入,其他键就结束.Y请输入书名价格:高等数学31.5是否继续输入,按Y键继续输入,其他键就结束.Y请输入书名价格:C语言35是否继续输入,按Y键继续输入,其他键就结束.nresult:67 ----+ 1mm- 1 0K 00.-"
时间: 2023-07-07 21:05:39 浏览: 156
以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stu {
char name[20];
float price;
struct stu *next;
};
struct stu *create_list();
void print_max(struct stu *head);
void free_list(struct stu *head);
int main() {
struct stu *head;
head = create_list();
print_max(head);
free_list(head);
return 0;
}
struct stu *create_list() {
struct stu *head = NULL, *p, *tail;
char name[20], choice;
float price;
do {
printf("请输入书名价格:\n");
scanf("%s %f", name, &price);
p = (struct stu *)malloc(sizeof(struct stu));
strcpy(p->name, name);
p->price = price;
p->next = NULL;
if (head == NULL) {
head = tail = p;
} else {
tail->next = p;
tail = p;
}
printf("是否继续输入,按Y键继续输入,其他键就结束.\n");
scanf(" %c", &choice);
} while (choice == 'Y' || choice == 'y');
return head;
}
void print_max(struct stu *head) {
struct stu *p = head;
float max_price = 0;
while (p != NULL) {
if (p->price > max_price) {
max_price = p->price;
}
p = p->next;
}
p = head;
printf("result:\n");
while (p != NULL) {
if (p->price == max_price) {
printf("%s %.2f\n", p->name, p->price);
}
p = p->next;
}
}
void free_list(struct stu *head) {
struct stu *p = head, *q;
while (p != NULL) {
q = p->next;
free(p);
p = q;
}
}
```
运行示例:
```
请输入书名价格:
Algorithms 105
是否继续输入,按Y键继续输入,其他键就结束.
Y
请输入书名价格:
高等数学 31.5
是否继续输入,按Y键继续输入,其他键就结束.
Y
请输入书名价格:
C语言 35
是否继续输入,按Y键继续输入,其他键就结束.
n
result:
Algorithms 105.00
```
阅读全文