当前位置: 代码迷 >> 综合 >> SWUST OJ#1035 定位顺序表最大最小值
  详细解决方案

SWUST OJ#1035 定位顺序表最大最小值

热度:73   发布时间:2023-12-05 17:44:11.0

目录

题目

思路

代码

数据结构

STL

仿STL


题目

建立长度为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;
}