从顺序表中返回最小值元素
程序员文章站
2022-06-08 18:39:05
...
题目:从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补。若顺序表为空显示出错信息并退出运行。
算法思想:搜索整个顺序表,查找最小值元素并记住其位置,搜索结束后用最后一个元素填补空出的原最小值元素位置。
实现该功能的代码:
int ListDeletMin_Sq(LIST *list)
{
if (list->length == 0)
return false;
int index = 0;
int pos = 0;
int min = list->base[index];
for (index = 1; index < list->length; index++)
{
if (min > list->base[index])
{
min = list->base[index];
pos = index;
}
}
list->base[pos] = list->base[list->length - 1];
return min;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 8
typedef struct
{
int * base;
int length;
int listsize;
}LIST;
void Init_LIST(LIST* list)
{
list->listsize = 100;
list->base = (int*)malloc(list->listsize*sizeof(int));
list->length = 0;
}
int ListDeletMin_Sq(LIST *list)
{
if (list->length == 0)
return false;
int index = 0;
int pos = 0;
int min = list->base[index];
for (index = 1; index < list->length; index++)
{
if (min > list->base[index])
{
min = list->base[index];
pos = index;
}
}
list->base[pos] = list->base[list->length - 1];
return min;
}
int main()
{
LIST mylist;
Init_LIST(&mylist);
printf("请输入mylist里数据:\n");
for (int i = 0; i < N; i++)
{
scanf("%d", &mylist.base[i]);
mylist.length++;
}
int min=ListDeletMin_Sq(&mylist); //注意如何接收函数返回值
printf("顺序表里的最小值元素为:%d\n", min);
printf("请输出mylist里数据:\n");
for (int i = 0; i < N; i++)
{
printf("%d ", mylist.base[i]);
}
}
运行结果:
推荐阅读
-
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
-
for循环练习 打印4面三角形,99乘法表 ,打印1-100内整数 数字包含9跳过 每行输出5个 用空格分隔,按照从大到小的顺序输出4位数中的个位+百位=十位+千位的数字及个数
-
从顺序表中返回最小值元素
-
数据结构笔记2:顺序表中删除最小值元素
-
5.1 编写程序 从键盘上输入5个整数,并存放到一个数组中,然后计算所有元素的和,最大值、最小值以及 平均值
-
从css样式表中抽取元素尺寸_html/css_WEB-ITnose
-
从css样式表中抽取元素尺寸_html/css_WEB-ITnose
-
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
-
JavaScript从已有的数组中返回选定的元素的slice() 方法
-
php从数组中随机选出一个或多个元素返回键名的函数array_rand()