目录
题目要求:
本题要求实现一个函数,统计单链表中所有值>=x的元素个数,并将表中值最大的元素记录在a中。
函数接口定义:
int count_max(LinkList &L, ElemType x, ElemType &a);
解释接口参数:其中L
, x
,a
都是用户传入的参数。 L
是指向单链表头结点的指针,单链表结点有两个成员,一个是data域,存放该结点的数据元素,不特别说明的话元素类型为整型,一个是next域 ,指向下一个结点;函数求解的单链表中值最大的元素记录在a
中。函数返回的值是>=x
的元素个数。若是空表的话,最大值默认为0。
裁判测试程序样例:
#include<iostream>
using namespace std;
typedef int Status;
typedef int ElemType;
typedef struct node {
ElemType data;
struct node *next;
}LNode,*LinkList;
Status InitList_Lk(LinkList &L) ; // 单链表的初始化,已实现,不用再定义
void CreatList(LinkList &L,int n); //创建含有n个元素的单链表,已实现,不用再定义
void ViewList(LinkList L) ;//打印单链表,已实现,不用再定义
int count_max(LinkList &L, ElemType x, ElemType &a);//要实现的函数
int main()
{
LinkList L;
ElemType a,x;
int i, n, sum;
InitList_Lk(L);
cin >> n;
CreatList(L, n);
cin >> x;
sum = count_max(L,x,a);
cout << ">=x元素个数:"<<sum<<"\n";
cout << "max="<<a;
return 0;
}
输入样例:
在这里给出一组输入。例如:
10
34 56 12 5 7 55 78 2 90 6
20
输出样例:
在这里给出相应的输出。例如:
>=x元素个数:5
max=90
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
学习时间:
2022/10/6
- 星期四下午14:00
- 但是有个问题,题目中本身的i,n,sum没用到
随便写写的答案:
int count_max(LinkList &L,ElemType x,ElemType &a)
{
int num= 0;
LinkList p = L;// 初始化
a = p->data;
while(p->next!=0)// 顺链域向后扫描,直到p为空 并且记录大于等于x的元素个数
{
if(p->data >= x)
num++;
p = p->next;
if(p->data > a)
a = p->data;
}
return num;
}