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

# include <stdio.h>
# include <stdlib.h>
#define Initsize 100

typedef int ElemType;

typedef struct {
    ElemType *data;
    int MaxSize,length;
}seqList;

/*C语言中, -> 是指针操作符, 点是结构操作符。

如果 L 是一个结构实例的指针,要用 -> 访问结构里的变量,而不能用点。

如果L 是一个结构的实例而非指针,只能用点而不能用 -> 。*/
void Init(seqList *L){
    L->data=(ElemType *)malloc(sizeof(ElemType)*Initsize);
    L->length=0;
    L->MaxSize=Initsize;
}

void create(seqList *L,int n){
    for (int i=0;i<n;i++){
        scanf("%d",&(L->data[i]));
        L->length=n;
    }
}

void show(seqList L){
    for(int i=0;i<L.length;i++){
        printf("%-3d ",L.data[i]);
    }
}

//2
bool Del_Min(seqList *L,ElemType *value){
        if(L->length==0){
            return false;
        }
        *value=L->data[0];
        int pos=0;
        for(int i=1;i<L->length;i++){
            if(L->data[i]<*value){
                *value=L->data[i];
                pos=i;
            }
        }
        L->data[pos]=L->data[L->length-1];
        L->length--;
        return true;
    }

int main(void){
    int n,value;
    seqList L;
    Init(&L);
    printf("please input length: ") ;
    scanf("%d",&n);
    printf("please input init data: ");
    create(&L,n);
    printf("you list: \n");
    show(L);
    
    Del_Min(&L,&value);
    
    printf("min data: %d ",value);
    printf("new list:");
    show(L);
    system("pause");
}
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值