1-5 线性表元素的区间删除 (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
元素可以通过>、==、<进行比较;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,k,h=MAXSIZE;for(i=0;i<h;i++){if(L->Data[i]>minD&&L->Data[i]<maxD){for(k=i;k<h;k++){L->Data[k]=L->Data[k+1]; }h--;}}L->Last=L->Data+h-1;return L;
}
跟之前的那个题一样也是向前移动,还不知道具体错因。
1-4 数组元素的区间删除 (20 分)
https://blog.csdn.net/BQDQSZ/article/details/100164636
struct LNode {ElementType Data[MAXSIZE];Position Last; /* 保存线性表中最后一个元素的位置 */
};
这个结构体包含了一个int数组和一个整数;
typedef struct LNode *List;
List L;
这两句又表明这道题中是想让你用结构体指针L
来访问结构体成员:int数组。
1-4 数组元素的区间删除 ,借助了一个新数组。这里就直接用一个新的结构体,然后返回他的地址给L
即可。
但是改完后还是不对,费解。
List Delete( List L, ElementType minD, ElementType maxD )
{struct LNode b;int k=0 ;for(int i=0;i< MAXSIZE;i++){if(L->Data[i]<=minD||L->Data[i]>=maxD){b.Data[k]=L->Data[i];k++; }}b.Last=k-1;return (&b);//错误,函数调用完成后,&b所指的那块存储空间已经物是人非了!!!!!!!!
}
我找到错因了,和之前的某道题一样:忘了局部变量在函数调用完成后就不存在了,所以返回的地址不是指向结构体的。应该使用动态分配。
修改后(20分):
List Delete( List L, ElementType minD, ElementType maxD )
{struct LNode *B;B=(struct LNode *)malloc(sizeof(struct LNode ));//!!!!!!!!!int i,k=0 ;for( i=0;i<=L->Last;i++){if(L->Data[i]<=minD||L->Data[i]>=maxD){B->Data[k]=L->Data[i];k++; }}B->Last=k-1;return (B);
}
还有这种思路我想不到(正确答案):
List Delete( List L, ElementType minD, ElementType maxD )
{int i,count=0;for(i=0;i<=L->Last;i++){if(L->Data[i]<maxD&&L->Data[i]>minD)//若当前元素在区间内,count+1 count++;elseL->Data[i-count]=L->Data[i];/*若当前元素不在区间内,把当前元素向前移动count单位,并替换Data[i-count]*/ }L->Last=L->Last-count;return L;
}
1-5 线性表元素的区间删除 (20 分)相关推荐
- 习题3.3 线性表元素的区间删除 (20 分)
给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: List Delete( List L, El ...
- 6-1 线性表元素的区间删除 (10 分)
** 6-1 线性表元素的区间删除 (10 分) ** 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接 ...
- 6-2 线性表元素的区间删除
给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: List Delete( List L, El ...
- 1-4 数组元素的区间删除 (20 分)
题目: 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: int Delete( int A[] ...
- 线性表元素的区间删除
裁判测试程序样例: 解法一: 时间复杂度为O(n^2) 1 //O(n^2)算法 2 List Delete( List L, ElementType minD, ElementType maxD ...
- 6-1 数组元素的区间删除
6-1 数组元素的区间删除 (20 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能改变. 函数接口定义: in ...
- java中线性表删除元素和删除指定元素_线性表的插入和删除(Java版)
1.线性表的定义: (1).线性表是一种可以在任意位置插入和删除数据元素操作.由n(n≥0)个相同类型数据元素a0, a1,-, an-1组成的线性结构.除了第一个元素没有前驱元素和最后一个元素没有后 ...
- PTA:6-8 数组元素的区间删除 (20 分)
大一下半期数据结构 数据结构题目集 数组元素的区间删除 (20 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素.删除后表中剩余元素保持顺序存储,并且相对位置不能 ...
- 折半查找和线性表的插入与删除实验
学号 姓名 博客名 2103101018 罗玛 桃花岛-戌时 题目:折半 ...
最新文章
- java swt窗口,SWT Java:如何防止窗口调整大小?
- 通过FTP4J 实现 FTPS 连接
- vue截取一个字符串_vue 截取字符串
- c++ mysql 操作_c++操作mysql入门详解
- sql 基本操作语句笔记
- EtherCAT主站SOEM函数详解----SDO读写函数
- 塔菲克蓝牙适配器驱动_TAFIQ蓝牙适配器驱动下载|TAFIQ蓝牙适配器驱动 v4.0 最新免费版 下载 - 巴士下载站...
- 华为电脑和手机一碰传_华为手机怎么一碰传文件到电脑教程
- 深入浅出CNN-经典总结(2019中秋)
- QT 读BIN文件的两种方式
- 小程序快递单号查询接口物流助手对接指南
- 使用mplayer做影片预览图
- 睡眠健康与肠道健康之间的双向联系
- vue开发PC端响应式项目
- 我的学习笔记002--asp.net中的路径mxx
- 牛顿法、梯度下降法与拟牛顿法
- CAD版本怎么转换?试试这种方法
- Strongly Connected Tournament
- 赵志博陕师大计算机科学学院,肖 冰
- 芋道 Spring Boot 对象转换 MapStruct 入门
热门文章
- centos7 kafka2.3.1单点部署
- TFS2010映射工作区问题 路径 XXX 已在工作区 XXX;XXX 中映射
- html属性wmode代码,html – wmode – 浏览器的渲染行为意味着什么?
- 1044. 火星数字(20)
- zabbix mysql主从_zabbix监控mysql主从状态
- 【OS学习笔记】十四 保护模式二:段描述符
- n个字符串按照字典序排列
- 关于python中带下划线的变量和函数 的意义
- 集腋成裘-10-ECharts -未知-03
- 关于onclick点击无效问题