顺序表应用6:有序顺序表查询
顺序表应用6:有序顺序表查询
Problem Description
Input
第二行依次输入n个各不相同的有序整数,代表表里的元素;
第三行输入整数t,代表要查询的次数;
第四行依次输入t个整数,代表每次要查询的数值。
Output
Example Input
10 1 22 33 55 63 70 74 79 80 87 4 55 10 2 87
Example Output
4 No Found! No Found! 10
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <malloc.h>
#define LISTINCREASMENT 20012 /*每次分配元素的个数*/
#define LISTSIZE 20012 /*顺序存储的最大个数*/
#define OVERFLOW -1
#define OK 1
int n,m;
using namespace std;
typedef int ElemType;
typedef struct /*顺序表元素的的定义*/
{
ElemType * elem;
int length;
int listsize;
} Sqlist;
int SqInitial(Sqlist &L) /*初始化线性表*/
{
L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType));
if (! L.elem) exit(OVERFLOW); //存储分配失败
L.length=0;
L.listsize=LISTSIZE;
return OK;
}
int ListInsert(Sqlist &L,int i,ElemType e) /*插入元素*/
{
if(i<1|| i > L.length+1) exit(-1);
if(L.length>=L.listsize)
{
ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)
*sizeof(ElemType));
if(!newbase) return OVERFLOW;// 当前存储空间已满
L.elem=newbase;
L.listsize+=LISTINCREASMENT; /*表的容量不足分配内存*/
}
ElemType * q=&(L.elem[i-1]);
ElemType * p;
for(p=&(L.elem[L.length-1]); p>=q; --p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
void display(Sqlist &L)
{
int i;
for(i=0;i<L.length-1;i++)
{
cout<<L.elem[i]<<" ";
}
cout<<L.elem[i]<<endl;
}
int query(Sqlist &L,int i,int j,int key)
{
int mid;
while(i<=j)
{
mid = (j+i)/2;
/*cout<<"L.elem[mid]=="<<L.elem[mid]<<endl;
cout<<"L.elem[i]=="<<L.elem[i]<<endl;
cout<<"L.elem[j]=="<<L.elem[j]<<endl;
*/
if(L.elem[mid]==key)
return mid+1;
if(L.elem[mid]<key)
{
i = mid+1;
}
if(L.elem[mid]>key)
{
j = mid-1;
}
}
return -1;
}
int main()
{
Sqlist L,L1,L2;
int t =1 ,d;
cin>>n;
SqInitial(L);
//printf("构建长度为len的顺序表。\n");
for(t=1; t<=n; t++) /*构建长度为n的顺序表*/
{
//printf("Please input the %dth list elem:",t);
scanf("%d",&d);
ListInsert(L,t,d);
}
cin>>m;
while(m--)
{
scanf("%d",&t);
d = query(L,0,n-1,t);
if(d==-1)
cout<<"No Found!"<<endl;
else
cout<<d<<endl;
}
return 0;
}
转载于:https://www.cnblogs.com/CCCrunner/p/6444613.html
顺序表应用6:有序顺序表查询相关推荐
- 有序边表算法----计算机图形学
有序边表算法: 有序边表算法的基本思想是:用水平扫描线从上到下(或从下到上)扫描由多条首尾相连的线段构成的多边形,每根扫描线与多边形的某些边产生一系列交点.将这些交点按照x坐标排序,将排序后的点两两成 ...
- 顺序表-有序顺序表表示集合-并集(两者比较,小者放入C,未遍历继续放入)
顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 这里有序的顺序表,可 ...
- 顺序表-有序顺序表表示集合-交集(while + 值比较)
顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 前面的顺序表是没有在 ...
- [SDUT](3329)顺序表应用5:有序顺序表归并 ---有序表归并(线性表)
顺序表应用5:有序顺序表归并 Time Limit: 100MS Memory Limit: 880KB Submit Statistic Discuss Problem Description 已知 ...
- 顺序表应用5:有序顺序表归并
题目描述 已知顺序表A与B是两个有序的顺序表,其中存放的数据元素皆为普通整型,将A与B表归并为C表,要求C表包含了A.B表里所有元素,并且C表仍然保持有序. 输入 输入分为三行: 第一行输入m.n(1 ...
- 递增有序顺序表的插入 (20分) 实验目的:1、掌握线性表的基本知识 2、深入理解、掌握并灵活运用线性表。3、熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置
递增有序顺序表的插入 (20分) 实验目的:1.掌握线性表的基本知识 2.深入理解.掌握并灵活运用线性表.3.熟练掌握线性表的存储结构及主要运算的实现 已知顺序表L递增有序,将X插入到线性表的适当位置 ...
- 6-2 有序顺序表的插入
本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序 ...
- 顺序表——有序顺序表的插入
本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序 ...
- ¥1-1 SWUST oj 941: 有序顺序表的合并操作的实现
有序顺序表的合并操作的实现 题目描述 源代码 题目描述 源代码 #include<iostream> #include<malloc.h> using namespace st ...
最新文章
- hdu2036(多边形面积)
- 深刻理解Python中的元类(metaclass)以及元类实现单例模式
- 如何使用React Hook
- mysql isam参数优化_MySQL MyISAM优化设置点滴
- 信安 | 网上吵个架都能被封号?是“黑科技”还是“黑产”?
- Centos中查找文件、目录、内容
- rufus中gpt和mrb磁盘_计算机关于磁盘的大杂烩
- 让Android Studio支持系统签名(证书)
- 基于机器视觉的铁片轮廓检测
- 【创建型】Prototype模式
- linux挂载安卓手机命令,Android开发中,mount指令的各种用法大全,挂载设备的各种配置...
- 基于新标注模式的实体和关系联合抽取方法(Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme)
- Dependency Walker
- ffmpeg转码命令
- Java技术体系概述
- VirtualBox基础使用教程
- tp6 阿里云短信接口 php
- 计算机科学导论二分法实验报告,二分法上机实验报告.doc
- 计算机接口接触不良,如何处理电脑耳机插口接触不良
- 【java网络】常用网络模型BIO
热门文章
- 模拟频率和数字频率的区别
- 数据库_数据库篇-第一章:数据库基本概念
- 电大计算机应用,(2016年电大)电大全国计算机应用考试网考.doc
- android 不固定指示器,Android简单的页面指示器
- 组态王怎么做超级曲线_鲁班修图:一款超级好用的修图软件
- php while 存钱,php趣味编程 -php存钱的问题
- android get请求最长字符,Android OKHTTP3的GET和POST方法(带basic auth)
- Java gdal .mif/.mid文件读取
- 如何快速设计元器件原理图库和PCB封装库?
- GitHub分享《深度学习500问》优质资源