给你一个顺序表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-顺序表查找及插入问题相关推荐

  1. 带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明

                                         带有哨兵的顺序表查找和二分法查找(折半查找)(java)代码+说明 一:带有哨兵的顺序表查找 1.算法设计:          ...

  2. 数据结构与算法(8-1)顺序表查找及优化

    目录 一.顺序表查找 二.顺序表查找优化(重点) 总代码 一.顺序表查找 从头到尾或从尾到头查找. //顺序表查找(需要判断两次) int ListSearch(char ch) {for (int ...

  3. 顺序表查找及其优化(Java)

    顺序表查找(线性查找): 1 private static void Ordersearch(int[] arr,int num) { 2 for (int i = 0; i < arr.len ...

  4. 数据结构25 ————顺序表查找

    数据结构25 ----顺序表查找 一. 目录 文章目录 数据结构25 ----顺序表查找 一. 目录 二. 顺序表查找 三. 顺序表查找代码 1.基本算法 2.进行优化 四. 参考资料 二. 顺序表查 ...

  5. 索引顺序表查找算法(分块查找)

    算法背景 有时候,可能会遇到这样的表:整个表中的元素未必有序,但若划分为若干块后,每一块中的所有元素均小于(或大于)其后面块中的所有元素.我们称这种为分块有序. 对于分块有序表的查找 首先,我们需要先 ...

  6. 静态顺序表创建,初始化,插入,删除,查找

    #include<stdlib.h> #define MaxSize 20 typedef struct {int data[MaxSize];int length; }sqlist; / ...

  7. 1-2、数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化

    学习需要记录,更需要温习! 上一篇我们总结了什么是线性表,线性表的ADT类型,线性表的两种存储类型顺序存储结构和链式存储结构,今天正式进入线性表的顺序存储结构的总结和归纳,也就是数据结构的线性表的顺序 ...

  8. 顺序表查找+折半查找(二级)

    我们讲了各种数据 结构之后,比如讲了线性表了,讲了栈和队列,讲了树和二叉树,讲了图之后呢,我们最后还有两个专题,一个叫查找,一个叫排序,我们先看看查找,查找包括哪些内容啊,第一个线性表的查找,数组或者 ...

  9. 顺序表指定位置插入元素

    问题描述: 本题要求实现一个函数,在顺序表的第i个位置插入一个新的数据元素e,插入成功后顺序表的长度加1,函数返回值为1:插入失败函数返回值为0:函数接口定义: int ListInsert(SqLi ...

最新文章

  1. 电大计算机考试打开画图程序,最新国家开放大学电大《计算机绘图》形考任务网考试题及答案.pdf...
  2. python基本使用-python-类的基本使用
  3. 惠普服务器bios查看硬件属性,查看硬件信息
  4. Python第四章__装饰器、迭代器
  5. python网络监控程序_python linux监控程序
  6. Google工程师详解Android架构
  7. 御剑飞行扫描后门加上burpsuite字典树爆破
  8. setup factory mysql_(一)setupFactory零基础制作零配置安装程序实例(打包JDK Tomcat Mysql mypm)...
  9. Keytool命令详解
  10. VC中的_variant_t和_bstr_t
  11. CWE-476: NULL Pointer Dereference(空指针间接引用)
  12. java中的坦克大战游戏设计报告论文_毕业论文基于Java语言的坦克大战游戏设计...
  13. 24小时365天不间断服务
  14. sql 中英文格式的时间转数字格式
  15. 『这辈子就相爱《何苦要等下辈子》 李草青青、肖玄MV』
  16. php面包屑源码,推荐两款好用的WordPress面包屑插件
  17. 非易失内存技术NVDIMM
  18. 软件企业软件产品税收优惠政策
  19. android 截屏需要权限,安卓App要权限还会偷删截屏?专治流氓App神器
  20. Nginx反向代理服务器及负载均衡服务配置实战

热门文章

  1. 读写锁SRWLock
  2. detectron2 demo cuda10.0 py3.6
  3. python 编程(关于twisted)
  4. 寻找某个数c语言,C++_C语言实现两个递减数列中寻找某一个数,本文实例讲述了C语言实现两个 - phpStudy...
  5. linux进程通信system v,【linux高级程序设计】(第十一章)System V进程间通信 4
  6. 怎么安装中文linux6,centos6.5下怎么安装中文输入法
  7. 相位测试音频mp3_苹果AirPods MAX耳机音质一大短板在哪里?蓝牙AAC编码品质讨论与测试 「Soomal」...
  8. 易安卓与jaVa_E4A变量 · E4A易安卓中文开发教程-E4A社区 · 看云
  9. 回归预测值预测区间_机器学习之线性回归概述
  10. Java基本数据包装类_java基本数据类型的包装类