用c语言实现查找顺序表中的最大值并将最大值移动到顺序表的末尾
时间: 2024-09-19 16:10:53 浏览: 155
在 C 语言中,我们可以使用遍历的方式寻找顺序表(数组)中的最大值,并将其与最后一个元素交换位置。这里是一个简单的示例:
```c
#include <stdio.h>
// 定义顺序表结构体
typedef struct {
int data; // 数据域
int size; // 当前大小
int capacity; // 总容量
} List;
// 初始化顺序表
void init_list(List *lst) {
lst->size = 0;
lst->capacity = 5; // 初始容量设为5
}
// 插入元素到列表尾部
void insert(List *lst, int value) {
if (lst->size == lst->capacity) { // 检查是否已满
lst->capacity *= 2; // 如果满,扩大容量
lst->data = realloc(lst->data, sizeof(int) * lst->capacity); // 动态扩容
}
lst->data[lst->size++] = value;
}
// 查找并返回最大值
int find_max(List *lst) {
int max = lst->data[0];
for (int i = 1; i < lst->size; i++) {
if (lst->data[i] > max)
max = lst->data[i];
}
return max;
}
// 将最大值移动到列表尾部
void move_max_to_end(List *lst) {
int max_value = find_max(lst);
lst->data[lst->size] = max_value;
lst->size++;
}
// 打印列表内容
void print_list(const List *lst) {
for (int i = 0; i < lst->size; i++)
printf("%d ", lst->data[i]);
printf("\n");
}
int main() {
List list;
init_list(&list);
// 插入一些元素
insert(&list, 5);
insert(&list, 3);
insert(&list, 9);
insert(&list, 1);
insert(&list, 7);
printf("Original list: ");
print_list(&list);
move_max_to_end(&list);
printf("List with max at the end: ");
print_list(&list);
return 0;
}
```
这个程序首先初始化一个顺序表,然后插入一些元素,找到最大值并将其移到列表的末尾,最后打印结果。
阅读全文