从顺序表表中删除具有最小值的元素(假设不唯一)并由函数返回被删元素值

从顺序表表中删除具有最小值的元素(假设不唯一),并由函数返回被删元素值
空出的位置由最后一个元素填补,若顺序表为空,则显示出错误信息并退出运行

//顺序表定义及初始化
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define MaxSize 10//定义最大长度

int InitArr[10] = { 3,9,2,5,4,8,6,1,7,10 };

typedef struct {
	int data[MaxSize];//用静态的数据存放数据元素
	int length;//顺序表当前长度
}Sqlist;//顺序表的类型定义

//初始化一个顺序表
void InitList(Sqlist* L)
{
	for (int i = 0;i < MaxSize;i++)
	{
		L->data[i] = InitArr[i];//将所有数据元素设置为默认初始值
	}
	L->length = 10;//顺序表初始长度为0
}
//从顺序表表中删除具有最小值的元素(假设不唯一),并由函数返回被删元素值
//空出的位置由最后一个元素填补,若顺序表为空,则显示出错误信息并退出运行

int del_min(Sqlist* L) {
	int i = 0;
	int min = (*L).data[i];//标记最小元素
	int index = 0;//标记最小元素下标

	//找最小元素位置
	for (i = 0;i < (*L).length;i++) {
		if ((*L).data[i] < min) {
			min = (*L).data[i];
			index = i;
		}
	}
	
	//删最小元素——即把最小元素后面的元素前移,length-1
	for (i = index;i < (*L).length-1;i++) {
		(*L).data[i] = (*L).data[i + 1];
	}
	(*L).length--;
	return min;
}
int main() 
{
	Sqlist L;
	InitList(&L);//初始化一个顺序表:3,9,2,5,4,8,6,1,7,10
	printf("初始顺序表为:");
	print(&L);

	printf("\n");
	int min = del_min(&L);
	printf("进行一次最小元素的删除,被删元素为:%d",min);
	printf("删除后顺序表为:");
	print(&L);

	printf("\n");
	min = del_min(&L);
	printf("进行两次最小元素的删除,被删元素为:%d", min);
	printf("删除后顺序表为:");
	print(&L);
	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劲夫学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值