精华内容
下载资源
问答
  • 习题3.3 线性表元素的区间删除 (20 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( ...

    习题3.3 线性表元素的区间删除 (20 分)

    给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。

    函数接口定义:

    List Delete( List L, ElementType minD, ElementType maxD );

    其中List结构定义如下:

    typedef int Position;
    typedef struct LNode *List;
    struct LNode {
        ElementType Data[MAXSIZE];
        Position Last; /* 保存线性表中最后一个元素的位置 */
    };

    L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较;minDmaxD分别为待删除元素的值域的下、上界。函数Delete应将Data[]中所有值大于minD而且小于maxD的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表。

    裁判测试程序样例:

    #include <stdio.h>
    
    #define MAXSIZE 20
    typedef int ElementType;
    
    typedef int Position;
    typedef struct LNode *List;
    struct LNode {
        ElementType Data[MAXSIZE];
        Position Last; /* 保存线性表中最后一个元素的位置 */
    };
    
    List ReadInput(); /* 裁判实现,细节不表。元素从下标0开始存储 */
    void PrintList( List L ); /* 裁判实现,细节不表 */
    List Delete( List L, ElementType minD, ElementType maxD );
    
    int main()
    {
        List L;
        ElementType minD, maxD;
        int i;
    
        L = ReadInput();
        scanf("%d %d", &minD, &maxD);
        L = Delete( L, minD, maxD );
        PrintList( L );
    
        return 0;
    }
    
    /* 你的代码将被嵌在这里 */

    输入样例:

    10
    4 -8 2 12 1 5 9 3 3 10
    0 4

    输出样例:

    4 -8 12 5 9 10 

    方法一,每次遇到要删除的元素,删除元素,将后面的元素分别前移一个 ,时间复杂度高,大规模数据运行超时

    List Delete( List L, ElementType minD, ElementType maxD ){  //大数据运行超时 
        int i,j; 
        for(i=0;i<=L->Last;i++){
        	if(L->Data[i]<maxD&&L->Data[i]>minD){
        		for(j=i;j<L->Last;j++){
        			L->Data[j]=L->Data[j+1];    			
    			}
    			L->Last--;
        		i--;
    		}
    	}
    	return L;
    }

    方法二,创建一个新的数组,对不需要删除的元素保存在新数组中,最后将新数组中的元素附给原数组,空间复杂度高,以空间换时间,测试AC

     

    List Delete( List L, ElementType minD, ElementType maxD ){  
        int i,j=0;
        int b[MAXSIZE] ;
        for(i=0;i<=L->Last;i++){
        	if(L->Data[i]>=maxD||L->Data[i]<=minD)		
    			b[j++]=L->Data[i];		
    	}
        L->Last=j-1;
    	for(i=0;i<=L->Last;i++)
    		L->Data[i]=b[i];
    	return L;
    }
    
    

     

    展开全文
  • 习题3.3 线性表元素的区间删除 建立一个新数组把不在范围内的数存起来,然后再重新赋回给原数组 List Delete(List L, ElementType minD, ElementType maxD) { int a[100010] = {0}; int i, j = 0; for(i = 0;...

    习题3.3 线性表元素的区间删除
    在这里插入图片描述
    在这里插入图片描述
    建立一个新数组把不在范围内的数存起来,然后再重新赋回给原数组

    List Delete(List L, ElementType minD, ElementType maxD)
    {
    	int a[100010] = {0};
    	int i, j = 0;
    	
    	for(i = 0; i <= L -> Last; i++)
    	{
    		int h = L -> Data[i];
    		if(!(minD < h && h < maxD))
    			a[j++] = h;		
    	}
    	
    	for(i = 0; i < j; i++)
    		L -> Data[i] = a[i];
    		
    	L -> Last = j - 1;
    	return L;
    }
    
    展开全文
  • 6-1 线性表元素的区间删除 (30 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L, ...

    6-1 线性表元素的区间删除 (30 分)
    给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。
    函数接口定义:
    List Delete( List L, ElementType minD, ElementType maxD );

    其中List结构定义如下:
    typedef int Position;
    typedef struct LNode List;
    struct LNode {
    ElementType Data[MAXSIZE];
    Position Last; /
    保存线性表中最后一个元素的位置 */
    };

    L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较;minD和maxD分别为待删除元素的值域的下、上界。函数Delete应将Data[]中所有值大于minD而且小于maxD的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表。
    裁判测试程序样例:
    #include <stdio.h>

    #define MAXSIZE 20
    typedef int ElementType;

    typedef int Position;
    typedef struct LNode List;
    struct LNode {
    ElementType Data[MAXSIZE];
    Position Last; /
    保存线性表中最后一个元素的位置 */
    };

    List ReadInput(); /* 裁判实现,细节不表。元素从下标0开始存储 /
    void PrintList( List L ); /
    裁判实现,细节不表 */
    List Delete( List L, ElementType minD, ElementType maxD );

    int main()
    {
    List L;
    ElementType minD, maxD;
    int i;

    L = ReadInput();
    scanf("%d %d", &minD, &maxD);
    L = Delete( L, minD, maxD );
    PrintList( L );
    
    return 0;
    

    }

    /* 你的代码将被嵌在这里 */

    输入样例:
    10
    4 -8 2 12 1 5 9 3 3 10
    0 4

    输出样例:
    4 -8 12 5 9 10

    代码实现:

    List Delete( List L, ElementType minD, ElementType maxD )
    {
     int i=0,j=0;
     while(i<=L->Last)
     {
      if(L->Data[i]>minD&&L->Data[i]<maxD)
       i++;
      else
      {
       L->Data[j]=L->Data[i];
       i++;
       j++;
      }
     }
     L->Last=j-1;
     return L;
    }
    展开全文
  • 线性表元素的区间删除题目答案注意 题目 答案 List Delete( List L, ElementType minD, ElementType maxD ) { int i,j=0; for(i=0;i<=L->Last;i++) { if(L->Data[i]>minD&&L->Data[i...

    线性表元素的区间删除

    题目

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    答案

    List Delete( List L, ElementType minD, ElementType maxD )
    {
    	int i,j=0;
    	for(i=0;i<=L->Last;i++)
    	{
    		if(L->Data[i]>minD&&L->Data[i]<maxD) continue;
    		else L->Data[j++]=L->Data[i]; 
    	}
    	L->Last=j-1;
    	return L;
    }
    

    注意

    这里的Last就是数组最后一个数字的下标,如果数组有10个数,Last的值就为9

    展开全文
  • 线性表元素的区间删除 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L, ElementType ...
  • 习题3.3 线性表元素的区间删除 (20分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List ...
  • 习题3.3 线性表元素的区间删除 (20 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( ...
  • 习题3.3-线性表元素的区间删除-函数题解题代码测试结果问题整理 解题代码 List Delete(List L, ElementType minD, ElementType maxD) { Position i; Position* a = (Position *)malloc((L->Last + 1) * sizeof...
  • 1-5 线性表元素的区间删除 (20分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L,...
  • 习题3.3 线性表元素的区间删除 (20分) List Delete( List L, ElementType minD, ElementType maxD ) { Position i=0,j=0,cnt=0; for(i=0,j=0; i<=L->Last; i++) { if(L->Data[i]<=minD||L->Da...
  • 习题3.3 线性表元素的区间删除 (20point(s)) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete...
  • 习题3.3 线性表元素的区间删除 (20分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List ...
  • 1-5 线性表元素的区间删除 (20 分)

    千次阅读 2019-08-29 17:06:51
    1-5线性表元素的区间删除(20分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L,...
  • 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L, ElementType minD, ElementType ...
  • 浙大版《数据结构(第2版)》题目集习题3.3 线性表元素的区间删除 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数...
  • 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: List Delete( List L, ElementType minD, ElementType ...
  • maxD,则把这个元素删除 思路:新建一个下标,指向处理后数组当前位置,若符合要求,则把原数组的元素放进来,否则不放进来。遍历完原数组之后,应当把L->Last修改成j-1,因为前面j++,已经为下一个处理做准备...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 291
精华内容 116
关键字:

线性表元素的区间删除