设顺序表L中所有的元素均为正整数,且无序排列。请编写完成以下功能的算法:
(1) 找出顺序表结点中的最大值,并将之打印出来;
(2) 统计顺序表中一共有多少个相同的最大值结点数。
顺序表结构如下:
typedef struct{
ElemType *elem;
int length;
}SqList;
#include<stdio.h>
#include<stdlib.h>
#define size 5
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
}SqList;
//定义一个初始化顺序表的函数
SqList initSqList()
{
SqList t;
t.elem = (ElemType *)malloc(size*sizeof(ElemType));
if(!t.elem)
{
printf("初始化失败");
}
t.length = 0;
return t;
}
int main()
{
int i;
SqList t = initSqList();
//向顺序表中添加元素
for(i = 1; i <= size; i++)
{
scanf("%d",&t.elem[i-1]);
t.length++;
}
//利用打擂台的方法找出最大值;
int max = t.elem[0]; //首先将第1个元素设置为最大值
int num = 0;
for(i=1;i<size;i++)
{
if(max < t.elem[i])
{
max = t.elem[i]; //max中始终保存着一个当前的最大值
}
}
for(i=0;i<size;i++)
{
if(max == t.elem[i])
{
num++;
}
}
printf("最大值为:%d\n",max);
printf("相同最大值的个数为:%d",num);
return 0;
}