用C语言求线性表中元素的最大值的函数代码
时间: 2023-05-12 18:06:44 浏览: 206
以下是用C语言求线性表中元素的最大值的函数代码:
```c
#include <stdio.h>
int max(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
printf("The maximum element in the array is %d", max(arr, n));
return 0;
}
```
希望能够帮到你!
相关问题
用c语言编写 设带头结点的线性表中元素值为非零正整数,试写出: (1)求线性表中所有元素值之和的递归函数(空表返回0) (2)求线性表中元素最大值的递归函数(空表返回0) (3)求线性表中元素个数的递归函数(空表返回0)
好的,我明白了,我将使用ChitGPT回答您的问题。关于题目,我来逐一回答:
(1)求线性表中所有元素值之和的递归函数(空表返回0):
```
int linkedListSum(ListNode* head) {
if (head == NULL) {
return 0;
} else {
return head->val + linkedListSum(head->next);
}
}
```
(2)求线性表中元素最大值的递归函数(空表返回0):
```
int linkedListMax(ListNode* head) {
int maxVal = 0;
if (head == NULL) {
return 0;
} else {
maxVal = linkedListMax(head->next);
return head->val > maxVal ? head->val : maxVal;
}
}
```
(3)求线性表中元素个数的递归函数(空表返回0):
```
int linkedListCount(ListNode* head) {
if (head == NULL) {
return 0;
} else {
return 1 + linkedListCount(head->next);
}
}
```
以上是使用C语言编写的,带头结点的线性表中,元素值为非零正整数的三个递归函数。如有需要,可以进行参考。
运用c语言的线性表实现上述代码
在C语言中,我们可以使用数组或动态内存分配(如`malloc()`)来实现线性表。下面是一个使用一维数组实现的插入函数示例:
```c
#include <stdio.h>
#include <string.h> // 使用memmove
#define MAX_SIZE 100 // 定义数组的最大容量
// 结构体表示线性表节点
typedef struct Node {
int data;
struct Node* next;
} Node;
// 动态插入排序表
void insert_sorted(Node** head, int x) {
if (*head == NULL || (*head)->data > x) {
// 创建一个新的节点并将x赋值
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = x;
newNode->next = *head;
*head = newNode; // 更新头节点
} else {
Node* current = *head;
while (current->next != NULL && current->next->data < x) {
current = current->next;
}
// 插入新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = x;
newNode->next = current->next;
current->next = newNode;
}
}
// 输出顺序表
void print_list(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
int size, num;
printf("Enter the length of the list: ");
scanf("%d", &size);
Node* head = NULL;
printf("Enter elements in ascending order:\n");
for (int i = 0; i < size; i++) {
scanf("%d", &num);
insert_sorted(&head, num);
}
printf("Sorted list after insertion: ");
print_list(head);
return 0;
}
```
在这个例子中,我们首先创建了一个空链表`head`。用户输入递增有序的数字,插入函数会检查每个节点的值是否大于新值,如果大于则直接插入;否则遍历链表直到找到适合的位置。最后,通过`print_list`函数打印出插入后的顺序表。
阅读全文