线性表的删除
給定一個順序存儲的線性表,請設計一個函數刪除所有值大于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,j=0;for(i=0;i<=L->Last;i++){if(L->Data[i]<=minD||L->Data[i]>=maxD){L->Data[j]=L->Data[i];j++;}}L->Last=j-1;return L; }就是遍歷,定義一個j
滿足條件的都按順序存入數組
總結
- 上一篇: 火龙果减肥法三天瘦8斤
- 下一篇: 什么是导管内乳头状瘤