C语言-查找顺序表中的最大值
【问题描述】
编写算法:在顺序表中查找最大值,输出最大值及其在顺序表中的位置(若出现多个相同最大值,位置为第一次出现的)
【输入形式】
输入若干个整数建立顺序表。(若输入整数个数为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语言-查找顺序表中的最大值相关推荐
- C语言数据结构顺序表的顺序查找和折半查找的功能
C语言顺序表顺序查找和折半查找的基本思想和应用 顺序查找算法:又称为线性查找,主要用在-线性表-中进行查找 通常分为:1-无序线性表的一般查找: 2-对关键字有序的顺序表查找: 优缺点分析: 缺点:当 ...
- c语言建立顺序表 存储并输出,请教数据结构课程中怎么建立顺序表,显示,输出,从头到尾详细点最好加讲解,希望大家能帮这个小忙...
#include #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType elem[MAXSIZE]; int lengt ...
- c语言中去掉最小值,2020-07-12(C语言)从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。...
//从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值.空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行. include include define MAXSI ...
- C语言创建顺序表并插入元素 详细注释
顺序表是用一组地址连续的存储单元依次存储数据元素的数据结构.顺序表是线性表的一种,线性表是最常用且最简单的一种数据结构,一个线性表是 n 个数据元素的有限序列.我们使用 c 语言来创建顺序表并插入元素 ...
- C语言--实现顺序表的基本操作
一.预备知识(先说到这么多,具体问题和所需的内容在后面的编程中再说) 1.开发环境和开发语言: 环境:visual studio 2019 语言:C 2.形参的生命周期(一定要明白形参的生存周期,特别 ...
- C语言实现顺序表(顺序存储结构)
顺序表(顺序存储结构)及初始化过程详解 顺序表,全名顺序存储结构,是线性表的一种.通过<线性表>一节的学习我们知道,线性表用于存储逻辑关系为"一对一"的数据,顺序表自然 ...
- C语言实现顺序表(增删查改等数据管理)
顺序表seqlist 小伙伴们,提到顺序表会想到什么呢? 数组?还是链表? 其实,数组和链表都是属于线性表,而链表在逻辑上是线性的,并非物理存储上也为线性:而数组无论在逻辑上还是物理存储上均为线性 所 ...
- 【C语言】顺序表的创建
一.代码实现部分: 1.顺序表是线性表的基础部分,至于顺序表,在本人看来无异于数组.至于线性表的概念,在此不再赘述.接下来尝试利用C语言对线性表中的顺序表进行代码实现(此程序中规定用户输入的数据类型为 ...
- c语言实现顺序表源程序,C语言实现静态顺序表的实例详解
C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识.只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作. ...
最新文章
- 服务器架设笔记——多模块和全局数据
- Go语言之并发示例-Pool(二)
- 【Web】Eclipse + Maven + Struts搭建服务器
- mysql 几十连接_MySQL挑战:10万连接数
- _用WSL,MobaXterm,Cmder配置linux开发环境
- Java DataInputStream readUnsignedByte()方法(带示例)
- Fedora-19安装texlive2013并配置中文
- 心态很容易受别人影响_女人生宝宝也看年龄?这3个影响生育能力的因素,你得了解清楚...
- 牛刀小试MySQL--基于GTID的replication
- 快来,这里不仅有帅哥,还有美女!!
- 【随记】还原SQL Server数据库步骤
- MySQL入门推荐书籍
- 优启通做服务器系统,系统安装教程1:制作优启通PE启动盘
- 三星 galaxy s7 启用开发者模式
- 用scribefire写blog
- python读取fits第三方库_Python读取和显示Fits文件
- 第一章 : JVM与体系结构
- 无任何编程基础的人,该怎么入门编程?
- linux调试工具ipcs的深入分析
- [py练习] 返回朋友名字的list