C语言线性表删除函数:删除指定范围元素
#include <stdio.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 ReadInput() { 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]); } }
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; }
/* 你的代码将被嵌在这里 */ List Delete( List &L, ElementType minD, ElementType maxD ) { List temp = L; // 临时指针指向L int count = 0; // 记录被删除的元素个数 for(int i=0; i<=L->last; i++) { if(L->Data[i] >= minD && L->Data[i] <= maxD) { count++; // 找到一个需要删除的元素,计数器+1 } else { L->Data[i-count] = L->Data[i]; // 将不需要删除的元素前移 } } L->last -= count; // 更新线性表的长度 return L; }
原文地址: http://www.cveoy.top/t/topic/pb3E 著作权归作者所有。请勿转载和采集!