线性表的删除
給定一個(gè)順序存儲(chǔ)的線性表,請(qǐng)?jiān)O(shè)計(jì)一個(gè)函數(shù)刪除所有值大于min而且小于max的元素。刪除后表中剩余元素保持順序存儲(chǔ),并且相對(duì)位置不能改變。
函數(shù)接口定義:
List Delete( List L, ElementType minD, ElementType maxD );其中List結(jié)構(gòu)定義如下:
typedef int Position; typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];Position Last; /* 保存線性表中最后一個(gè)元素的位置 */ };L是用戶傳入的一個(gè)線性表,其中ElementType元素可以通過>、==、<進(jìn)行比較;minD和maxD分別為待刪除元素的值域的下、上界。函數(shù)Delete應(yīng)將Data[]中所有值大于minD而且小于maxD的元素刪除,同時(shí)保證表中剩余元素保持順序存儲(chǔ),并且相對(duì)位置不變,最后返回刪除后的表。
裁判測(cè)試程序樣例:
#include <stdio.h>#define MAXSIZE 20 typedef int ElementType;typedef int Position; typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];Position Last; /* 保存線性表中最后一個(gè)元素的位置 */ };List ReadInput(); /* 裁判實(shí)現(xiàn),細(xì)節(jié)不表。元素從下標(biāo)0開始存儲(chǔ) */ void PrintList( List L ); /* 裁判實(shí)現(xiàn),細(xì)節(jié)不表 */ 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; }就是遍歷,定義一個(gè)j
滿足條件的都按順序存入數(shù)組
總結(jié)
- 上一篇: 火龙果减肥法三天瘦8斤
- 下一篇: 6-7 求链表的倒数第m个元素 (25