第1章第1节练习题1 删除最小值

news/2024/5/20 6:44:58 标签: 数据结构, 算法, 顺序表

问题描述

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

算法思想">算法思想

搜索整个顺序表,查找最小值元素并记下其所在位置,搜索结束后用最后一个元素填补空出的最小值元素位置。

算法描述">算法描述

ElemType DelMin(SqList *L)
{
    int i=0,k;
    ElemType temp=L->data[i];
    for(i=0;i<L->length;i++){
        if(temp>L->data[i]){
            temp=L->data[i];
            k=i;
        }
    }
    if(k==i-1){
        L->data[k]=L->data[i-2];
    }else{
        L->data[k]=L->data[i-1];
    }
    ElemType e=temp;
    return e;   
}

具体代码见附件


附件

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef int ElemType;
//定义顺序表
typedef struct{
    ElemType data[MaxSize];
    int length;
}SqList;
//声明函数
ElemType DelMin(SqList *);
void print(SqList *);

int main(int argc,char *argv[])
{
    SqList SL;
    SL.length=10;
    //初始化线性表
    for(int i=0;i<SL.length;i++){
        SL.data[i]=SL.length-i;
    }
    print(&SL);

    ElemType e;
    e=DelMin(&SL);
    print(&SL);
    printf("The number %d is deleted!\n",e);
    return 0;
}
//删除最小值
ElemType DelMin(SqList *L)
{
    int i=0,k;
    if(L->length<=0){
        printf("The SqList illegal! \n");
        exit(-1);
    }
    ElemType temp=L->data[i];
    for(i=0;i<L->length;i++){
        if(temp>L->data[i]){
            temp=L->data[i];
            k=i;
        }
    }
    if(k==i-1){
        L->data[k]=L->data[i-2];
    }else{
        L->data[k]=L->data[i-1];
    }
    ElemType e=temp;
    return e;   
}
//打印顺序表
void print(SqList *L)
{
    for(int i=0;i<L->length;i++){
        printf("%d\t",L->data[i]);
    }
    printf("\n");
}

http://www.niftyadmin.cn/n/1801519.html

相关文章

Chair Man小喇叭

Chair Man 看起来象是普通手机座,但是其实是可以放MP3播放器的扬声器,仔细看它脚就是它的喇叭.可以在座位上放上任何的音乐随身听&#xff0c;再插上耳机插头就好了.电源是采用三颗三号电池&#xff08;AA电池&#xff09;&#xff0c;所以 Chair Man 省却了AC 电源线的困扰.转…

第1章第1节练习题2 逆置顺序表

问题描述 设计一个高效的算法&#xff0c;将顺序表的所有元素逆置&#xff0c;要求算法的空间复杂度为O(1)。 算法思想 扫描顺序表L的前半部分&#xff0c;并且同时与L的后半部分交换。 算法描述 int Reverse(SqList *L) {ElemType temp;for(int i0;i<L->length/2;i){te…

超经典的JBOSS入门文章

前言本文是为想在JBOSS环境下进行EJB开发的读者而写的&#xff0c;在阅读本文之前&#xff0c;你最好对EJB有一个基本了解。JBOSS是一个开放源码的免费EJB服务器&#xff0c;它实现了其它J2EE所规定的大多数功能&#xff0c;现在sun公司已经把JBOSS作为J2EE1.4的标准实现服务器…

CodeSmith实用技巧(四):使用扩展属性

SchemaExplorer允许我们获取数据库中一些对象的信息。如果你使用的是SQL Server2000数据库&#xff0c;你可以通过扩展属性获取很多对象的有用的信息。例如&#xff1a;SQL Server定义了一个扩展属性来标识表中的唯一标识字段&#xff0c;在模版中可以这样写&#xff1a;<?…

第1章第1节练习题3 删除指定元素

问题描述 长度为n的顺序表L&#xff0c;编写一个时间复杂度为O(n)&#xff0c;空间复杂度为O(1)的算法&#xff0c;该算法删除线性表中所有值为e的数据元素 算法思想1 用k记录顺序表L中不等于e的元素个数&#xff08;即需要保存的元素个数&#xff09;&#xff0c;边扫描边统计…

第1章第1节练习题4 有序表删除指定区间值

问题描述 从有序顺序表中删除其值在定值s和t之间s<t的所有元素&#xff0c;如果s或t不合理或者顺序表为空&#xff0c;则显示出错信息并退出运行。 算法思想 考虑到本题中给出的是有序顺序表&#xff0c;因此需要删除的元素必然是相连的整体。那么我们只需要找到值大于等于s…

泛型技巧系列:如何提供类型参数之间的转换

从今天起&#xff0c;我将分享一些我在.NET泛型方面的研究心得。这些心得大都是我在设计VBF中思考发现的&#xff0c;还受了很多C模板与JAVA泛型的启发。其中相当多的技巧和概念都是大部分“深入C# 2.0”类文章也见不到的。我考虑把其中概念性的部分系统地整理成书&#xff0c;…

第1章第1节练习题5 无序表删除指定区间值

问题描述 从顺序表中删除其值在给定值s与t之间&#xff08;包含s和t&#xff0c;要求s<t&#xff09;的所有元素&#xff0c;如果s或t不合理或者顺序表为空则显示出错信息并退出运行。 算法思想 注意理解题意&#xff0c;本题与练习题4是不同的&#xff0c;练习题4中说明了该…