数据结构例题1:线性表的最小值查找及删除

         本题主要思维就是通过数据结构线线性表一维静态分配_Maxg1en-的博客-CSDN博客定义一维数组,通过随机静态赋值,定义findMin()函数去寻找最小值下标,定义delmin()对线性表元素进行删除。

        findMin()应用的是遍历数组全部内容,使用pos代表最小值下标,初始化默认第一个数值data[0]的值为最小值,pos值为0,如果遇到更大的值,则更改。

        delmin()是使用将线性表传入,通过findMin()函数得到最小值下标,将后续的所有后续元素向前移动一维,移动结束后,记得将线性表Length-1.

#include <stdio.h>
#include <stdlib.h>  

typedef int Elemtype;
#define MaxSize 50

typedef struct
{
	Elemtype data[MaxSize];
	int length;
}SqList;



void findMin(SqList *L,int *value,int *pos)
{
	int i = 1;
	*value = L->data[0];
	*pos = 0;
	while(i<L->length)
	{ 
		if (L->data[i] < *value)
		{
			*value = L->data[i];
			*pos = i;
		}
		i++;
	}
}

int  delmin(SqList* L, Elemtype* value)
{
	//如果线性表长度等于0 则删除失败
	if (L->length == 0)
		return 0;

	int pos = 0;
	*value = 0;
	findMin(L, value, &pos);
	//找到最小值后,将最后一个值与最小值的位置替换,然后将length的长度减一。
	L->data[pos] = L->data[L->length - 1];
	L->length = L->length - 1;
	return 1;
}

int main(void)
{
	int value=0, pos=0;
	SqList L;
	L.length = 10;
	for (int i =0;i<L.length;i++)
	{
		L.data[i] = rand(5);
	}
	L.data[0] = 1555565;
/*
	findMin(&L, &value, &pos);
	for (int i = 0;i < L.length;i++)
	{
		printf("%d\n",L.data[i]);
	}
	printf("the most value is %d, the min postion is %d\n",value,pos);
	*/
	int num = 0;

	if(delmin(&L, &num))
	{ 
		printf("%d\n",num);
		for (int i = 0;i < L.length;i++)
		{
			printf("%d\n", L.data[i]);
		}
	}
	else {
		printf("删除失败");
	}
	return 0;
}

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值