6 1 線性表元素的區間刪除 (20 分)

2021-08-28 03:45:59 字數 1349 閱讀 1420

給定乙個順序儲存的線性表,請設計乙個函式刪除所有值大於min而且小於max的元素。刪除後表中剩餘元素保持順序儲存,並且相對位置不能改變。

函式介面定義:

list delete( list l, elementtype mind, elementtype maxd );

其中list結構定義如下:

typedef int position;

typedef struct lnode *list;

struct lnode

; l是使用者傳入的乙個線性表,其中elementtype元素可以通過》、==、《進行比較;mind和maxd分別為待刪除元素的值域的下、上界。函式delete應將data中所有值大於mind而且小於maxd的元素刪除,同時保證表中剩餘元素保持順序儲存,並且相對位置不變,最後返回刪除後的表。

裁判測試程式樣例:

#include 

#define maxsize 20

typedef

int elementtype;

typedef

int position;

typedef

struct lnode *list;

struct lnode ;

list readinput(); /* 裁判實現,細節不表。元素從下標0開始儲存 */

void printlist( list l ); /* 裁判實現,細節不表 */

list delete( list l, elementtype mind, elementtype maxd );

int main()

/* 你的**將被嵌在這裡 */

我先把自己第一次**貼出來吧,直接暴力,結果超時了

list

delete( list

l, elementtype mind, elementtype maxd )

l->last

--;

}else

i++;

} return l;

}

第二次是 也是在同乙個陣列裡面操作,不同點在於沒有在發現符合刪除條件的元素直接把其後面的所有元素像第一種方法一樣向前移動,而是用count計數,然後遇到不符合刪除條件的元素,就把該元素向前移動count個單位,並替換掉data[i-count];

list delete( list l, elementtype mind, elementtype maxd )

l->last-=count;

return l;

}

1 5 線性表元素的區間刪除 20分

給定乙個順序儲存的線性表,請設計乙個函式刪除所有值大於min而且小於max的元素。刪除後表中剩餘元素保持順序儲存,並且相對位置不能改變。函式介面定義 list delete list l,elementtype mind,elementtype maxd 其中list結構定義如下 typedef i...

1 5 線性表元素的區間刪除 20分

給定乙個順序儲存的線性表,請設計乙個函式刪除所有值大於min而且小於max的元素。刪除後表中剩餘元素保持順序儲存,並且相對位置不能改變。list delete list l,elementtype mind,elementtype maxd 其中list結構定義如下 typedef int posi...

6 4 線性表元素的區間刪除 20 分

給定乙個順序儲存的線性表,請設計乙個函式刪除所有值大於min而且小於max的元素。刪除後表中剩餘元素保持順序儲存,並且相對位置不能改變。函式介面定義 list delete list l,elementtype mind,elementtype maxd 其中list結構定義如下 typedef i...