用c语言按一下要求写一篇代码1. 请以“后插法”创建一个数据元素为整数的单链表。 2. 请编写一个函数可以输入并输出单链表中的所有整数。 3. 请编写一个Max函数获取单链表中包含的最大整数值。
时间: 2024-10-16 13:06:30 浏览: 37
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int data; // 节点数据
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 创建新节点并插入到链表尾部(后插法)
ListNode* createNode(int value) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
// 后插法创建链表
void insertSortedList(ListNode** head, int value) {
if (*head == NULL || value <= (*head)->data) {
*head = createNode(value);
} else {
ListNode* curr = *head;
while (curr->next != NULL && curr->next->data < value) {
curr = curr->next;
}
curr->next = createNode(value);
}
}
// 打印链表中的所有整数
void printList(ListNode* head) {
while (head != NULL) {
printf("%d -> ", head->data);
head = head->next;
}
printf("NULL\n");
}
// 获取链表中的最大值
int getMax(ListNode* head) {
if (head == NULL) {
return -1; // 如果链表为空,则返回-1表示无最大值
}
int max = head->data;
ListNode* temp = head->next;
while (temp != NULL) {
if (temp->data > max) {
max = temp->data;
}
temp = temp->next;
}
return max;
}
int main() {
// 初始化链表头指针
ListNode* head = NULL;
// 插入一些整数(例如从最小到最大)
insertSortedList(&head, 5);
insertSortedList(&head, 2);
insertSortedList(&head, 9);
insertSortedList(&head, 1);
insertSortedList(&head, 7);
// 输出链表中的所有整数
printf("Sorted List:\n");
printList(head);
// 获取链表中的最大值
int maxVal = getMax(head);
printf("\nMaximum Value in the list is: %d\n", maxVal);
return 0;
}
```
阅读全文