YTU 2986: 删除区间内的元素(线性表)
2986: 删除区间内的元素(线性表)
时间限制: 1 Sec 内存限制: 2 MB
提交: 8 解决: 3
题目描述
若一个线性表L采用顺序存储结构,其中元素都为整数。设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1).
顺序表定义为:
需编写的算法为:
bool Delete(SqList *&L,ElemType x,ElemType y);
注意:只需提交删除区间内元素的算法Delete部分。
输入
输入的第一行代表线性表的长度n,n<=SizeMax。第二行输入n个元素并插入到线性表中,第三行输入两个整数x,y,确定区间。
输出
输出的数据占两行,第一行是删除之后线性表的长度length,接下来的一行是线性表中的每个元素。
样例输入
10
5 3 6 2 1 9 8 7 4 0
3 7
样例输出
5
2 1 9 8 0
提示
1、请使用C++编译并提交
2、只需提交删除区间内元素算法的部分
3、注意区间端点值是否合理
迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……
bool Delete(SqList *&L,ElemType x,ElemType y)
{
if(x>y)return false;
int n=L->length;
for(int i=0,j=0; i<n; i++)
{
if(L->data[i]>=x&&L->data[i]<=y)L->length--;
else L->data[j++]=L->data[i];
}
return true;
}
#include <stdio.h>
#include <stdlib.h>
#define SizeMax 10000
typedef int ElemType;
typedef struct
{
ElemType data[SizeMax];
int length;
} SqList;
void CreateList(SqList *&L,ElemType n)
{
if(n>SizeMax)return;
L=(SqList*)malloc(sizeof(SqList));
for(int i=0; i<n; i++)
scanf("%d",&L->data[i]);
L->length=n;
}
bool Delete(SqList *&L,ElemType x,ElemType y)
{
if(x>y)return false;
int n=L->length;
for(int i=0,j=0; i<n; i++)
{
if(L->data[i]>=x&&L->data[i]<=y)L->length--;
else L->data[j++]=L->data[i];
}
return true;
}
void Print(SqList *L)
{
int i;
printf("%d\n",L->length);
for(i=0; i<L->length; i++)
printf(i!=L->length-1?"%d ":"%d\n",L->data[i]);
}
void DestroyList(SqList *&L)
{
free(L);
}
int main()
{
SqList *L;
ElemType n,x,y;
scanf("%d",&n);
CreateList(L,n);
scanf("%d%d",&x,&y);
if(Delete(L,x,y))
Print(L);
DestroyList(L);
return 0;
}
YTU 2986: 删除区间内的元素(线性表)的更多相关文章
- YTU 2991: 链表节点逆置(线性表)
2991: 链表节点逆置(线性表) 时间限制: 1 Sec 内存限制: 128 MB 提交: 14 解决: 6 题目描述 设计一个算法,将一个带头节点的数据域依次为a1,a2,-,an(n> ...
- B. Uniqueness 删除最小区间内的元素使得剩余元素唯一
B. Uniqueness time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 06多次查询某区间内topk问题
题目描述:给定一个数组,需要多次查找不同区间内的,第k大或者第k小的元素. 考虑题目是多次查找,如果采用只对查询区间内的元素进行排序的思路,然后输出第k大的数的策略,那 ...
- C#线性表之顺序表
线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...
- C语言 线性表 双向链式结构 实现
一个双向链式结构实现的线性表 duList (GCC编译). /** * @brief 线性表双向链表结构 * @author wid * @date 2013-10-28 * * @note 若代码 ...
- [置顶] ※数据结构※→☆线性表结构(queue)☆============优先队列 链式存储结构(queue priority list)(十二)
优先队列(priority queue) 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除.在优先队列中,元素被赋予优先级.当访问元素时,具有最高优先级的元素最先删除.优先队列具有 ...
- 第2章 线性表《C#数据结构和算法》
( )除第一个位置的数据 元素外,其它数据元素位置的前面都只有一个数据元素:( )除最后一个位置的 数据元素外,其它数据元素位置的后面都只有一个元素.也就是说,数据元素是 一个接一个的排列.因此,可以 ...
- Stack栈类与、Queue队列与线性表的区别和联系
栈和队列都属于特殊的线性表 一.定义 1.线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同的情 ...
- 使用C语言实现线性表
线性表是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列,序列中的每个数据元素,可以是一个数字,可以是一个字符,也可以是复杂的结构体或对象.例如:1,2,3,4,5是一个线性表,A,B ...
随机推荐
- Java基础之读文件——使用通道随机读取文件(RandomFileRead)
import java.nio.file.*; import java.nio.channels.FileChannel; import java.io.IOException; import jav ...
- 6.理解DispatcherServlet
DispatcherServlet的作用 DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,负责职责的分派, 且与Spring IoC容器无缝 ...
- 在navgationController中添加UISegmentedControl
NSArray *segmentedArray = [NSArray arrayWithObjects:@"患者基本信息",@"患者信息",nil]; UISe ...
- PostgreSQL wiki
https://wiki.postgresql.org/wiki/Main_Page https://wiki.postgresql.org/wiki/Converting_from_other_Da ...
- 超炫的3D翻转模板
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- stucts2 基础程序
参考<Struts2+Hibernate+Spring> index.jsp
- 封装mysqli类
类: <?phpheader('content-type:text/html;charset=utf-8');/*掌握满足单例模式的必要条件(1)私有的构造方法-为了防止在类外使用new关键字实 ...
- 静态关键字static
//静态关键字的使用static //类里面的普通成员是属于对象的,不是属于类的(调用的时候是用对象调用) //什么叫做静态的:类静态成员是属于类的,不是属于每个对象的 //定义静态成员用static ...
- 深入了解webservice_开发实战篇
服务器端: 第一: 配置环境 创建一个Web Project,将XFire自己的包及其XFire依赖的jar包(6个jar包)全部导入到classpath下,方法是,只需将jar包粘贴在WebRoot ...
- 将服务费用DIY到底----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十)[转]
前一段时间,讲了一系列开发经理.实施经理.服务经理的工具箱:开发经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三) ,实施经理的工具箱--走出软件作坊:三五个人十来条枪 如何成 ...