【问题描述】

编写算法:在顺序表中查找最大值,输出最大值及其在顺序表中的位置(若出现多个相同最大值,位置为第一次出现的)

【输入形式】

输入若干个整数建立顺序表。(若输入整数个数为0,则表示建立空表)

【输出形式】

输出顺序表中最大值及其第一次出现的位置(位序)。(若为空表,则输出“no”)

【样例输入1】

12 34 -90 87 126 -3

【样例输出1】

126 5

【样例输入2】

12 12 12 9 -3 -2

【样例输出2】

12 1

【样例输入3】

e

【样例输出2】

no

【样例说明】

样例3输入e,表示输入非法整数。顺序表没有接收到合法元素,建立空表;因此最大值不存在,输出“no”

顺序表的基本操作在前面的文章已经介绍过,这个问题只需要添加一个查找最大值并返回位序的函数即可;

代码如下:

//查找最大值:返回最大值在顺序表中的位序,若为空表,返回0
int searchMax(Sqlist *L)
{if(L->length==0)return 0;int i,maxnum=0,max=L->slist[0];for(i=1;i<L->length;i++){if(L->slist[i]>max){max=L->slist[i];maxnum=i;}}return maxnum+1;   //位序要比下标多一
}

完整代码如下:

#include <stdio.h>
#include <stdlib.h>
#define INIT_SIZE 5
#define INCREM 3
typedef int ElemType;
typedef struct Sqlist{ElemType *slist;int length;int listsize;
}Sqlist;
//初始化
int initSq(Sqlist *L)
{L->slist=(ElemType *)malloc(INIT_SIZE*sizeof(ElemType));if(L->slist==NULL){return 0;}L->length=0;L->listsize=INIT_SIZE;return 1;
}
//插入元素
int insertSq(Sqlist *L, ElemType e, int i)
{if(i<1||i>L->length+1){return 0;}if(L->length>=L->listsize){L->slist=(ElemType *)realloc(L->slist,(L->listsize+INCREM)*sizeof(ElemType));if(L->slist==NULL)return 0;//L->listsize+=INCREM;}int j;for(j=L->length-1;j>=i-1;j--){L->slist[j+1]=L->slist[j];}L->slist[i-1]=e;L->length++;L->listsize+=INCREM;return 1;
}
//输出顺序表
void printSq(Sqlist *L)
{int i;for(i=0;i<L->length;i++){printf("%d ",L->slist[i]);}printf("\n");
}
//查找最大值:返回最大值在顺序表中的位序,若为空表,返回0
int searchMax(Sqlist *L)
{if(L->length==0)return 0;int i,maxnum=0,max=L->slist[0];for(i=1;i<L->length;i++){if(L->slist[i]>max){max=L->slist[i];maxnum=i;}}return maxnum+1;
}
int main()
{Sqlist sq;ElemType e;if(initSq(&sq)){while(scanf("%d",&e)==1){insertSq(&sq,e,sq.length+1);}//以下补充输出结果代码int ans;ans=searchMax(&sq);if(ans==0)printf("no\n");else printf("%d %d\n",sq.slist[ans-1],ans);}return 0;
}

运行结果如下:

(Ctrl+Z结束输入)

C语言-查找顺序表中的最大值相关推荐

  1. C语言数据结构顺序表的顺序查找和折半查找的功能

    C语言顺序表顺序查找和折半查找的基本思想和应用 顺序查找算法:又称为线性查找,主要用在-线性表-中进行查找 通常分为:1-无序线性表的一般查找: 2-对关键字有序的顺序表查找: 优缺点分析: 缺点:当 ...

  2. c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...

    #include #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType elem[MAXSIZE]; int lengt ...

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

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

  4. C语言创建顺序表并插入元素 详细注释

    顺序表是用一组地址连续的存储单元依次存储数据元素的数据结构.顺序表是线性表的一种,线性表是最常用且最简单的一种数据结构,一个线性表是 n 个数据元素的有限序列.我们使用 c 语言来创建顺序表并插入元素 ...

  5. C语言--实现顺序表的基本操作

    一.预备知识(先说到这么多,具体问题和所需的内容在后面的编程中再说) 1.开发环境和开发语言: 环境:visual studio 2019 语言:C 2.形参的生命周期(一定要明白形参的生存周期,特别 ...

  6. C语言实现顺序表(顺序存储结构)

    顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然 ...

  7. C语言实现顺序表(增删查改等数据管理)

    顺序表seqlist 小伙伴们,提到顺序表会想到什么呢? 数组?还是链表? 其实,数组和链表都是属于线性表,而链表在逻辑上是线性的,并非物理存储上也为线性:而数组无论在逻辑上还是物理存储上均为线性 所 ...

  8. 【C语言】顺序表的创建

    一.代码实现部分: 1.顺序表是线性表的基础部分,至于顺序表,在本人看来无异于数组.至于线性表的概念,在此不再赘述.接下来尝试利用C语言对线性表中的顺序表进行代码实现(此程序中规定用户输入的数据类型为 ...

  9. c语言实现顺序表源程序,C语言实现静态顺序表的实例详解

    C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识.只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作. ...

最新文章

  1. 服务器架设笔记——多模块和全局数据
  2. Go语言之并发示例-Pool(二)
  3. 【Web】Eclipse + Maven + Struts搭建服务器
  4. mysql 几十连接_MySQL挑战:10万连接数
  5. _用WSL,MobaXterm,Cmder配置linux开发环境
  6. Java DataInputStream readUnsignedByte()方法(带示例)
  7. Fedora-19安装texlive2013并配置中文
  8. 心态很容易受别人影响_女人生宝宝也看年龄?这3个影响生育能力的因素,你得了解清楚...
  9. 牛刀小试MySQL--基于GTID的replication
  10. 快来,这里不仅有帅哥,还有美女!!
  11. 【随记】还原SQL Server数据库步骤
  12. MySQL入门推荐书籍
  13. 优启通做服务器系统,系统安装教程1:制作优启通PE启动盘
  14. 三星 galaxy s7 启用开发者模式
  15. 用scribefire写blog
  16. python读取fits第三方库_Python读取和显示Fits文件
  17. 第一章 : JVM与体系结构
  18. 无任何编程基础的人,该怎么入门编程?
  19. linux调试工具ipcs的深入分析
  20. [py练习] 返回朋友名字的list

热门文章

  1. 基于OPENldap搭建postfix 虚拟用户
  2. 【Quartz.net】- Cron表达式
  3. VB.NET项目技术总结
  4. 解说linux下proc文件系统
  5. prototype.js 源码解读v1.3.1版本
  6. 99乘法表(java版)
  7. ECharts属性设置
  8. 六步实现Spring.NET 与 NHibernate 的整合
  9. 不一样的结果,不一样的人生
  10. Valid Number 1