後記本題要求實現順序表的操作集。
函式介面定義:
list makeempty();
position find( list l, elementtype x );
bool insert( list l, elementtype x, position p );
bool delete( list l, position p );
其中list結構定義如下:
typedef int position;
typedef struct lnode list;
struct lnode ;
各個操作函式的定義為:
list makeempty():建立並返回乙個空的線性表;
position find( list l, elementtype x ):返回線性表中x的位置。若找不到則返回error;
bool insert( list l, elementtype x, position p ):將x插入在位置p並返回true。若空間已滿,則列印「full」並返回false;如果引數p指向非法位置,則列印「illegal position」並返回false;
bool delete( list l, position p ):將位置p的元素刪除並返回true。若引數p指向非法位置,則列印「position p empty」(其中p是引數值)並返回false。
裁判測試程式樣例:
#include
#include
#define maxsize 5
#define error -1
typedef enum bool;
typedef int elementtype;
typedef int position;
typedef struct lnode list;
struct lnode ;
list makeempty();
position find( list l, elementtype x );
bool insert( list l, elementtype x, position p );
bool delete( list l, position p );
int main()
scanf("%d", &n);
while ( n-- )
scanf("%d", &n);
while ( n-- )
return 0;/* 你的**將被嵌在這裡 */
輸入樣例:
61 2 3 4 5 6
36 5 1
2-1 6
輸出樣例:
full insertion error: 6 is not in.
finding error: 6 is not in.
5 is at position 0.
1 is at position 4.
position -1 empty deletion error.
full insertion error: 0 is not in.
position 6 empty deletion error.
full insertion error: 0 is not in.
這個其實是乙個函式題,他集中考察的是順序表的基本操作:初始化,插入,刪除,查詢。
我們來分步說,具體的幾個函式:
list makeempty()
首先利用malloc函式分配一段連續的空間,l->last指的是list l中最後乙個元素的下標。值得注意的是:
list l =
(list)
malloc
(sizeof
(struct lnode)
);
其中涉及到malloc函式的用法,可能不是很理解。具體參考:malloc函式的用法
對錶中進行插入時,首先要考慮以下幾種情況:
1.
if
(l->last == maxsize -1)
`
這時意味著list已經滿了,無法再進行插入。
2.
if
(p<
0|| p>
(l->last +1)
)
當插入位置是小於0,或者最後乙個元素位置的後乙個位置之後的位置,那麼這個時候位置無法進行插入,插入的位置是非法的。
3.當位置合法並且表不是滿的時候,插入乙個元素首先應該把其後面的元素依次把位置往後挪位置,空出位置,後來再將其放進去。注意迴圈的次數。
bool
insert
(list l, elementtype x, position p)
if(p<
0|| p>
(l->last +1)
)int i;
for(i = l-
>last+
1; i > p; i--
) l-
>data[i]
= x;
l->last++
;return
true
;}
首先判斷刪除的位置p,是否是合法的,注意區分刪除和插入的位置的不同。之後將刪除位置後面的元素挨著挨著往前挪,依舊注意迴圈。
bool
delete
(list l, position p)
for(j = p; j < l-
>last; j++
)//不可以取到等於
l->last--
;return
true
;}
position find
(list l, elementtype x)
return error;
}
將它遍歷一遍,從頭找到尾。
這個題主要考察順序表的基本操作,難度不是很大,主要注意的地方就是在插入換刪除操作上面。
6 2 順序表操作集 20 分
本題要求實現順序表的操作集。list makeempty position find list l,elementtype x bool insert list l,elementtype x,position p bool delete list l,position p 其中list結構定義如下...
6 2 順序表操作集 20分
本題要求實現順序表的操作集。函式介面定義 list makeempty position find list l,elementtype x bool insert list l,elementtype x,position p bool delete list l,position p 其中lis...
6 2 順序表操作集 20分
本題要求實現順序表的操作集。函式介面定義 list makeempty position find list l,elementtype x bool insert list l,elementtype x,position p bool delete list l,position p 其中lis...