5-顺序表查找及插入问题
给你一个顺序表a[],请找到
1-0 第一个x出现的位置,如果不存在,输出-1
1-1 前两个x出现的位置,如果只存在一个x,输出他的位置,如果一个都不存在,输出-1
1-2 查询最小/大元素所在的位置,如果多个最小/大值,输出第一个
1-3 查询次大/小值所在的位置。
2-0向顺序表a[]的第i个(下标从0开始)位置前插入一个元素x。如果插入位置太小输出-1,太大输出1,合法输出0并完成插入
代码1:(自己写的):
#include <stdio.h>
const int maxn = 100;int finds(int a[],int n,int x)
{int couter=0;for(int i=1;i<=n;i++){if((a[i]==x)){return i;}}return -1;
}void finds1(int a[],int n,int x)
{int couter=0;for(int i=1;i<=n;i++){if((a[i]==x)&&(couter<2)){printf("%d ",i);couter++;}}if(!couter)printf("-1");
}int finds2(int a[],int n)
{int site=1;a[0]=a[1]; //设a[0]为最大元素,每个元素跟a[0]进行比较for(int i=2;i<=n;i++){if(a[0]<a[i]){a[0]=a[i];site=i;}}return site;
}//max1和max2的值需要先做一个比较,以下代码未比较,待改正
/*int finds3(int a[],int n)
{int b[3];int max1=1,max2=2;b[1]=a[1];for(int i=2;i<=n;i++){if(a[i]>b[1]){b[2]=b[1];max2=max1;b[1]=a[i];max1=i;}else if(a[i]<b[1]){if(a[i]>b[2]){b[2]=a[i];max2=i;}}}return max2;
}
*/int main()
{int a[maxn];int n,x;scanf("%d %d",&n,&x);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}// int ret=finds(a,n,x);
// printf("%d\n",ret);// finds1(a,n,x);// int maxs = finds2(a,n);
// printf("%d",maxs);printf("%d",finds3(a,n));return 0;
}
代码2:(西交wrong):
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>using namespace std;
const int maxn = 100000;
typedef pair<int,int> P;
int findx(int a[],int n,int x)
{for(int i=1;i<=n;i++)if(a[i]==x) return i;return -1;
}
void findxy(int a[],int n,int x,int &x1,int &x2)
{bool cot=0;//当前出现了0个xfor(int i=1;i<=n;i++)if(a[i]==x)if(cot==0) {x1=i;cot=1;}elseif(cot==1) {x2=i;return ;}
}
int findmax(int a[],int n)
{int maxpos=1,maxnum=a[1];for(int i=2;i<=n;i++)if(a[i]>maxnum) {maxnum=a[i];maxpos=i;}return maxpos;
}
int findmax2(int a[],int n)
{//nint max1=max(a[1],a[2]),max2=min(a[1],a[2]),pos1,pos2;if(a[1]>a[2]) {pos1=1;pos2=2;}else {pos1=2;pos2=1;}for(int i=3;i<=n;i++){if(a[i]>max1) {max2=max1;pos2=pos1;max1=a[i];pos1=i;}elseif(a[i]==max1) continue;else {if(a[i]>max2){pos2=i;max2=a[i];}}}return pos2;
}
int insertList(int a[],int th,int n,int x)
{if(th<1) return -1;if(th>n) return 1;for(int i=n;i>=th;i--)a[i+1]=a[i];a[th]=x;return 0;
}
int main()
{int a[maxn];//1.0 第一个x出现的位置,如果不存在,输出-1int n,x,y;cin>>n>>x>>y;for(int i=1;i<=n;i++) scanf("%d",&a[i]);//int res=findx(a,n,x);//printf("%d\n",res);/*int x1=-1,x2=-1;findxy(a,n,x,x1,x2);if(x1==-1) printf("-1\n");elseif(x2!=-1) printf("%d %d\n",x1,x2);else printf("%d\n",x1);*///printf("%d\n",findmax2(a,n));cout<<insertList(a,x+1,n,y)<<endl;for(int i=1;i<=n+1;i++)cout<<a[i]<<" ";cout<<endl;return 0;
}
(感谢西交wrong学长提供以上题目练习)
5-顺序表查找及插入问题相关推荐
- 带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明
带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明 一:带有哨兵的顺序表查找 1.算法设计: ...
- 数据结构与算法(8-1)顺序表查找及优化
目录 一.顺序表查找 二.顺序表查找优化(重点) 总代码 一.顺序表查找 从头到尾或从尾到头查找. //顺序表查找(需要判断两次) int ListSearch(char ch) {for (int ...
- 顺序表查找及其优化(Java)
顺序表查找(线性查找): 1 private static void Ordersearch(int[] arr,int num) { 2 for (int i = 0; i < arr.len ...
- 数据结构25 ————顺序表查找
数据结构25 ----顺序表查找 一. 目录 文章目录 数据结构25 ----顺序表查找 一. 目录 二. 顺序表查找 三. 顺序表查找代码 1.基本算法 2.进行优化 四. 参考资料 二. 顺序表查 ...
- 索引顺序表查找算法(分块查找)
算法背景 有时候,可能会遇到这样的表:整个表中的元素未必有序,但若划分为若干块后,每一块中的所有元素均小于(或大于)其后面块中的所有元素.我们称这种为分块有序. 对于分块有序表的查找 首先,我们需要先 ...
- 静态顺序表创建,初始化,插入,删除,查找
#include<stdlib.h> #define MaxSize 20 typedef struct {int data[MaxSize];int length; }sqlist; / ...
- 1-2、数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化
学习需要记录,更需要温习! 上一篇我们总结了什么是线性表,线性表的ADT类型,线性表的两种存储类型顺序存储结构和链式存储结构,今天正式进入线性表的顺序存储结构的总结和归纳,也就是数据结构的线性表的顺序 ...
- 顺序表查找+折半查找(二级)
我们讲了各种数据 结构之后,比如讲了线性表了,讲了栈和队列,讲了树和二叉树,讲了图之后呢,我们最后还有两个专题,一个叫查找,一个叫排序,我们先看看查找,查找包括哪些内容啊,第一个线性表的查找,数组或者 ...
- 顺序表指定位置插入元素
问题描述: 本题要求实现一个函数,在顺序表的第i个位置插入一个新的数据元素e,插入成功后顺序表的长度加1,函数返回值为1:插入失败函数返回值为0:函数接口定义: int ListInsert(SqLi ...
最新文章
- 电大计算机考试打开画图程序,最新国家开放大学电大《计算机绘图》形考任务网考试题及答案.pdf...
- python基本使用-python-类的基本使用
- 惠普服务器bios查看硬件属性,查看硬件信息
- Python第四章__装饰器、迭代器
- python网络监控程序_python linux监控程序
- Google工程师详解Android架构
- 御剑飞行扫描后门加上burpsuite字典树爆破
- setup factory mysql_(一)setupFactory零基础制作零配置安装程序实例(打包JDK Tomcat Mysql mypm)...
- Keytool命令详解
- VC中的_variant_t和_bstr_t
- CWE-476: NULL Pointer Dereference(空指针间接引用)
- java中的坦克大战游戏设计报告论文_毕业论文基于Java语言的坦克大战游戏设计...
- 24小时365天不间断服务
- sql 中英文格式的时间转数字格式
- 『这辈子就相爱《何苦要等下辈子》 李草青青、肖玄MV』
- php面包屑源码,推荐两款好用的WordPress面包屑插件
- 非易失内存技术NVDIMM
- 软件企业软件产品税收优惠政策
- android 截屏需要权限,安卓App要权限还会偷删截屏?专治流氓App神器
- Nginx反向代理服务器及负载均衡服务配置实战
热门文章
- 读写锁SRWLock
- detectron2 demo cuda10.0 py3.6
- python 编程(关于twisted)
- 寻找某个数c语言,C++_C语言实现两个递减数列中寻找某一个数,本文实例讲述了C语言实现两个 - phpStudy...
- linux进程通信system v,【linux高级程序设计】(第十一章)System V进程间通信 4
- 怎么安装中文linux6,centos6.5下怎么安装中文输入法
- 相位测试音频mp3_苹果AirPods MAX耳机音质一大短板在哪里?蓝牙AAC编码品质讨论与测试 「Soomal」...
- 易安卓与jaVa_E4A变量 · E4A易安卓中文开发教程-E4A社区 · 看云
- 回归预测值预测区间_机器学习之线性回归概述
- Java基本数据包装类_java基本数据类型的包装类