2986: 删除区间内的元素(线性表)

时间限制: 1 Sec  内存限制: 2 MB

提交: 8  解决: 3

题目描述

若一个线性表L采用顺序存储结构,其中元素都为整数。设计一个算法,删除元素值在[x,y]之间的所有元素,要求算法的时间复杂度为O(n),空间复杂度为O(1).

顺序表定义为:

typedef struct
{
    ElemType data[SizeMax];
    int length;
} SqList;

需编写的算法为:

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: 删除区间内的元素(线性表)的更多相关文章

  1. YTU 2991: 链表节点逆置(线性表)

    2991: 链表节点逆置(线性表) 时间限制: 1 Sec  内存限制: 128 MB 提交: 14  解决: 6 题目描述 设计一个算法,将一个带头节点的数据域依次为a1,a2,-,an(n> ...

  2. B. Uniqueness 删除最小区间内的元素使得剩余元素唯一

    B. Uniqueness time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  3. 06多次查询某区间内topk问题

            题目描述:给定一个数组,需要多次查找不同区间内的,第k大或者第k小的元素.         考虑题目是多次查找,如果采用只对查询区间内的元素进行排序的思路,然后输出第k大的数的策略,那 ...

  4. C#线性表之顺序表

    线性表是最简单.最基本.最常用的数据结构.线性表是线性结构的抽象(Abstract), 线性结构的特点是结构中的数据元素之间存在一对一的线性关系. 这种一对一的关系指的是数据元素之间的位置关系,即: ...

  5. C语言 线性表 双向链式结构 实现

    一个双向链式结构实现的线性表 duList (GCC编译). /** * @brief 线性表双向链表结构 * @author wid * @date 2013-10-28 * * @note 若代码 ...

  6. [置顶] ※数据结构※→☆线性表结构(queue)☆============优先队列 链式存储结构(queue priority list)(十二)

    优先队列(priority queue) 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除.在优先队列中,元素被赋予优先级.当访问元素时,具有最高优先级的元素最先删除.优先队列具有 ...

  7. 第2章 线性表《C#数据结构和算法》

    ( )除第一个位置的数据 元素外,其它数据元素位置的前面都只有一个数据元素:( )除最后一个位置的 数据元素外,其它数据元素位置的后面都只有一个元素.也就是说,数据元素是 一个接一个的排列.因此,可以 ...

  8. Stack栈类与、Queue队列与线性表的区别和联系

    栈和队列都属于特殊的线性表   一.定义   1.线性表(linear list): 是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.数据元素是一个抽象的符号,其具体含义在不同的情 ...

  9. 使用C语言实现线性表

    线性表是最常用且最简单的一种数据结构.一个线性表是n个数据元素的有限序列,序列中的每个数据元素,可以是一个数字,可以是一个字符,也可以是复杂的结构体或对象.例如:1,2,3,4,5是一个线性表,A,B ...

随机推荐

  1. AWR--导出AWR数据

    SQL> create or replace directory expdp_dir as '/home/oracle/dump'; Directory created. SQL> @$O ...

  2. .NET Framework 4 中的并行编程9---线程安全集合类

    原文转载自:http://www.cnblogs.com/xray2005/archive/2011/10/11/2206745.html 在.Net 4中,新增System.Collections. ...

  3. docker note

    docker --bip="10.1.42.1/16" -d 挂载宿主机目录 Docker支持挂载宿主机目录,支持宿主机目录和容器之间文件目录进行映射,彼此共享: docker r ...

  4. JQuery Delay Hover效果

    CSS代码 .tbui_aside_float_bar { position: fixed; left: 50%; bottom: 120px; margin-left: 608px; border- ...

  5. yii添加行的增删改查

    效果图: 控制器: <?phpnamespace backend\controllers;use Yii;use yii\web\Controller;use backend\models\Zh ...

  6. ACdream 1157 Segments(CDQ分治)

    题目链接:http://acdream.info/problem?pid=1157 Problem Description 由3钟类型操作:1)D L R(1 <= L <= R < ...

  7. Android Handler练习

    package com.example.myact12; import java.util.Random; import android.support.v7.app.ActionBarActivit ...

  8. html5文件上传

    <!DOCTYPE html><html><head> <title>Html5 Ajax 上传文件</title></head> ...

  9. 夺命雷公狗ThinkPHP项目之----企业网站11之栏目的删除完成

    我们删除要在分类模型中添加一个_before_delete的钩子函数,而且在删除一个分类时候,如果这个分类有子分类就不允许删除 model层代码如下所示: <?php namespace Adm ...

  10. windows下pip升级到8.1.2

    升级pip只要切换到easy_install-3.5目录下:  easy_install-3.5 pip==8.1.2