C语言线性表删除元素函数实现 - List Delete(List &L, ElementType minD, ElementType maxD)
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;
}
函数实现说明:
- 创建新线性表:函数首先创建了一个新的线性表
newList,用于存储删除元素后的结果。 - 遍历原线性表:函数遍历原线性表
L,对于每个元素,判断其是否在指定范围内(minD和maxD之间)。 - 添加符合条件的元素:如果元素不在指定范围内,则将其添加到新线性表
newList中。 - 返回新线性表:函数最后返回新线性表
newList,该线性表包含了原线性表中不属于指定范围内的元素。
代码示例:
假设输入的线性表为:1 2 3 4 5 6 7 8 9,minD为3,maxD为6,则调用Delete函数后,返回的线性表为:1 2 7 8 9。
注意事项:
- 该函数不会修改原线性表,而是返回一个新的线性表。
- 函数中的
MAXSIZE定义了线性表的最大容量,需要根据实际情况调整。 - 函数假设输入的线性表是有效的,即元素个数不超过
MAXSIZE。
总结:
该函数实现了从一个线性表中删除指定范围内的元素的功能,代码简洁易懂,可读性强。在实际应用中,可以根据需要修改函数的参数类型和功能。
原文地址: http://www.cveoy.top/t/topic/pb3A 著作权归作者所有。请勿转载和采集!