目录
题目
建立长度为n的顺序表,在表中找出最大值和最小值元素所在的位
输入
第一行为顺序表的长度n;第二行为顺序表中的数据元素;输出
第一行为最大值的位置;第二行为最小值的位置。 本题输出格式:第一行输出需换行,第二行输出无需换行。
样例输入
7 1 2 3 4 5 6 7样例输出
Lmax=6 Lmin=0
思路
本题可以像普通数组那样,从头遍历,找到最大值最小值,并记录位置。
代码
数据结构
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
//定义顺序表
typedef struct{
int item[10005],len;
}Seqlist;
//初始化顺序表
void SeqlistInit(Seqlist* &L){
L=(Seqlist*)malloc(sizeof(Seqlist));
L->len=0;
}
//创建顺序表
void SeqlistCreate(Seqlist* &L){
int n,x;cin>>n;
while(n--){
cin>>x;
L->item[L->len++]=x;
}
}
//查找数据
void SeqlistFind(Seqlist* &L){
int x,maxn=-1,minn=100005,Lmax,Lmin;
for(int i=0;i<L->len;i++){
if(L->item[i]>maxn){
maxn=L->item[i];
Lmax=i;
}
if(L->item[i]<minn){
minn=L->item[i];
Lmin=i;
}
}
cout<<"Lmax="<<Lmax<<endl<<"Lmin="<<Lmin;
}
int main(){
Seqlist *L;
SeqlistInit(L);
SeqlistCreate(L);
SeqlistFind(L);
return 0;
}
STL
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
vector<int>a;
int n,x;cin>>n;
while(n--) {
cin>>x;
a.push_back(x);
}
vector<int>::iterator it;
int minn=100000,maxn=-1,i=0,Lmax,Lmin;
for(it=a.begin();it!=a.end();it++,i++){
if(*it>maxn) {
maxn=*it;
Lmax=i;
}
if(*it<minn) {
minn=*it;
Lmin=i;
}
}
cout<<"Lmax="<<Lmax<<endl<<"Lmin="<<Lmin;
return 0;
}
仿STL
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef struct {
int data[10005];
int len;
}Seqlist;
//初始化顺序表
void SeqlistInit(Seqlist* &L) {
L=(Seqlist*)malloc(sizeof(Seqlist));
L->len=0;
}
//正向迭代器
int* begin(Seqlist* &L) {
int *p=&L->data[0];
return p;
}
int* end(Seqlist* &L) {
int *p=&L->data[L->len];
return p;
}
//尾增
void push_back(Seqlist* &L,int key) {
L->data[L->len++]=key;
}
int main() {
Seqlist *L;
SeqlistInit(L);
int n,x;cin>>n;
while(cin>>x,push_back(L,x),--n);
int minn=100000,maxn=-1,i=0,Lmax,Lmin;
int* it;
for(it=begin(L);it!=end(L);it++,i++){
if(*it>maxn) {
maxn=*it;
Lmax=i;
}
if(*it<minn) {
minn=*it;
Lmin=i;
}
}
cout<<"Lmax="<<Lmax<<endl<<"Lmin="<<Lmin;
system("pause");
return 0;
}