博客
关于我
第3-4周练习题2020——1-5 线性表元素的区间删除 (20分)
阅读量:443 次
发布时间:2019-03-03

本文共 1183 字,大约阅读时间需要 3 分钟。

以下是重新优化后的内容:


函数接口定义:

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的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表。


输入样例:

104 -8 2 12 1 5 9 3 3 100 4

输出样例:

4 -8 12 5 9 10

思路

为了实现删除特定范围内的元素功能,我们需要遍历线性表中的每个元素,检查其是否满足删除条件(即大于minD且小于maxD)。满足条件的元素将被存储到一个临时数组中。处理完所有元素后,将临时数组中的元素复制回原线性表中,更新线性表的最后一个位置指针,返回修改后的线性表。

代码实现

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

解释

  • 初始化临时数组:创建一个临时线性表temp,用于存储需要保留的元素。

  • 遍历线性表:从线性表的第一个元素开始,逐个检查每个元素是否满足删除条件(即大于minD且小于maxD)。

  • 存储满足条件的元素:如果元素满足条件,将其值添加到临时数组temp中。

  • 复制临时数组到原数组:将临时数组中的元素复制回原线性表的相应位置,覆盖那些需要保留的元素。

  • 更新线性表的最后一个位置指针:将线性表的最后一个位置指针更新为临时数组的长度减一。

  • 返回修改后的线性表:返回删除操作后的线性表。

  • 这种方法确保了线性表中剩余元素的顺序不变,同时也保证了相对位置的正确性。

    转载地址:http://sglm.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现lfu cache缓存算法(附完整源码)
    查看>>
    Objective-C实现LFU缓存算法(附完整源码)
    查看>>
    Objective-C实现linear algebra线性代数算法(附完整源码)
    查看>>
    Objective-C实现linear congruential generator线性同余发生器算法(附完整源码)
    查看>>
    Objective-C实现linear discriminant analysis线性判别分析算法(附完整源码)
    查看>>
    Objective-C实现linear regression线性回归算法(附完整源码)
    查看>>
    Objective-C实现linear search线性搜索算法(附完整源码)
    查看>>
    Objective-C实现Linear search线性搜索算法(附完整源码)
    查看>>
    Objective-C实现LinearSieve线性素数筛选算法 (附完整源码)
    查看>>
    Objective-C实现LinkedListNode链表节点类算法(附完整源码)
    查看>>
    Objective-C实现LinkedList链表算法(附完整源码)
    查看>>
    Objective-C实现local weighted learning局部加权学习算法(附完整源码)
    查看>>
    Objective-C实现logistic regression逻辑回归算法(附完整源码)
    查看>>
    Objective-C实现logistic sigmoid函数(附完整源码)
    查看>>
    Objective-C实现longest Common Substring最长公共子串算法(附完整源码)
    查看>>
    Objective-C实现longest increasing subsequence最长递增子序列算法(附完整源码)
    查看>>
    Objective-C实现longestCommonSubsequence最长公共子序列算法(附完整源码)
    查看>>
    Objective-C实现LongestIncreasingSubsequence最长递增子序列算法(附完整源码)
    查看>>
    Objective-C实现lorenz transformation 洛伦兹变换算法(附完整源码)
    查看>>
    Objective-C实现Lower-Upper Decomposition上下分解算法(附完整源码)
    查看>>