C语言线性表删除元素函数实现 - List Delete(List &L, ElementType minD, ElementType maxD)

本文提供了一个C语言函数实现,用于从一个线性表中删除指定范围内的元素。函数名为List Delete(List &L, ElementType minD, ElementType maxD),接受一个线性表指针、最小值和最大值作为参数,返回一个新的线性表,其中包含了原线性表中不属于指定范围内的元素。

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef int ElementType;
typedef int Position;
typedef struct LNode *List;
struct LNode {
    ElementType Data[MAXSIZE];
    Position last; /* 线性表的长度*/
};

List Delete( List &L, ElementType minD, ElementType maxD )
{
    List newList = (List)malloc(sizeof(struct LNode)); // 创建一个新的线性表来存储删除后的元素
    newList->last = -1; // 初始化新线性表的长度为-1
    for (int i = 0; i <= L->last; i++)
    {
        if (L->Data[i] < minD || L->Data[i] > maxD)
        {
            newList->Data[++newList->last] = L->Data[i]; // 将符合条件的元素添加到新线性表中
        }
    }
    return newList; // 返回新的线性表
}

List ReadInput() {
    List L = (List)malloc(sizeof(struct LNode));
    int num, i, temp;
    scanf('%d', &num);
    for (i = 0; i < num; i++) {
        scanf('%d', &(L->Data[i]));
    }
    L->last = num - 1;
    return L;
}

void PrintList( List L ) {
    for (int i = 0; i <= L->last; i++) {
        printf('%d ', L->Data[i]);
    }
    printf('
');
}

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;
}

函数实现说明:

  1. 创建新线性表:函数首先创建了一个新的线性表newList,用于存储删除元素后的结果。
  2. 遍历原线性表:函数遍历原线性表L,对于每个元素,判断其是否在指定范围内(minDmaxD之间)。
  3. 添加符合条件的元素:如果元素不在指定范围内,则将其添加到新线性表newList中。
  4. 返回新线性表:函数最后返回新线性表newList,该线性表包含了原线性表中不属于指定范围内的元素。

代码示例:

假设输入的线性表为:1 2 3 4 5 6 7 8 9minD3maxD6,则调用Delete函数后,返回的线性表为:1 2 7 8 9

注意事项:

  1. 该函数不会修改原线性表,而是返回一个新的线性表。
  2. 函数中的MAXSIZE定义了线性表的最大容量,需要根据实际情况调整。
  3. 函数假设输入的线性表是有效的,即元素个数不超过MAXSIZE

总结:

该函数实现了从一个线性表中删除指定范围内的元素的功能,代码简洁易懂,可读性强。在实际应用中,可以根据需要修改函数的参数类型和功能。

C语言线性表删除元素函数实现 - List Delete(List &L, ElementType minD, ElementType maxD)

原文地址: http://www.cveoy.top/t/topic/pb3A 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录