用c语言写一篇代码,要求以“后插法”先创建一个数据元素为整数的单链表,然后让我自己输入一个整数插入到单链表并打印出来,然后再用一个MAX函数获取单链表中包含的最大整数值
时间: 2024-10-16 21:06:38 浏览: 33
当然可以,首先我们来编写一个简单的C语言程序,它包括链表结构、节点的创建、插入操作以及查找最大值的函数。这里假设我们将使用头指针表示链表。
```c
#include <stdio.h>
#include <stdlib.h>
// 链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 创建新节点并分配内存
Node* createNode(int value) {
Node* newNode = (Node*)malloc(sizeof(Node));
if (newNode != NULL) {
newNode->data = value;
newNode->next = NULL;
}
return newNode;
}
// 后插法插入节点
void insertNode(Node** head, int value) {
Node* newNode = createNode(value);
if (*head == NULL) {
*head = newNode;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 打印链表
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
// 查找并返回链表中的最大值
int findMax(Node* head) {
if (head == NULL) {
return -1; // 如果链表为空,返回-1
}
int max = head->data;
Node* current = head->next;
while (current != NULL) {
if (current->data > max) {
max = current->data;
}
current = current->next;
}
return max;
}
int main() {
Node* head = NULL;
// 创建链表示例
insertNode(&head, 5);
insertNode(&head, 10);
insertNode(&head, 3);
printf("插入后的链表:\n");
printList(head);
int input;
printf("请输入一个整数插入链表:");
scanf("%d", &input);
insertNode(&head, input);
printList(head);
int maxInList = findMax(head);
printf("\n链表中的最大整数是:%d\n", maxInList);
return 0;
}
```
现在你可以运行这个程序,按照提示输入数字并查看结果。当你再次运行时,可以根据需要添加新的插入点。注意,此代码中没有处理可能出现的错误情况,如内存分配失败等。在实际项目中,你需要添加适当的错误检查和清理代码。
阅读全文