鏈式表的按序號查詢

2021-08-21 06:08:18 字數 1875 閱讀 1106

elementtype findkth( list l, int k );
其中list結構定義如下:

typedef struct lnode *ptrtolnode;

struct lnode ;

typedef ptrtolnode list;

l是給定單鏈表,函式findkth要返回鏈式表的第k個元素。如果該元素不存在,則返回error

#include #include #define error -1

typedef int elementtype;

typedef struct lnode *ptrtolnode;

struct lnode ;

typedef ptrtolnode list;

list read(); /* 細節在此不表 */

elementtype findkth( list l, int k );

int main()

return 0;

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

1 3 4 5 2 -1

63 6 1 5 4 2

4 na 1 2 5 3
我的理解:

q1:按序號查詢的鍊錶是帶頭結點,還是不帶頭結點呢?

a1: 我仔細檢視輸入樣例

和輸出樣例

(開始時,我這樣理解的:我明明輸入了6個結點對應的資料值1,3,4,5,2,-1,和結點的數目,怎麼會查不到-1呢?

難道是因為鍊錶帶有頭結點,而且鍊錶的結點數目有限制所導致的嗎?

並不是,

1,節點數目有限的是順序表,回頭看結點定義,如下:

顯然不是順序表了。

2.注意線性表與順序表的定義,與區別

線性表:具有相同特性資料元素的乙個有限序列。

線性表的儲存結構:順序儲存結構「順序表」,鏈式儲存結構「鍊錶」。

順序表:所有元素按照其邏輯順序,從指定儲存位置開始一塊連續的儲存空間。

3.為什麼查詢6號位置的返回值是error----->"na"?

因為查詢的結點的數值是-1時,返回error

##第一種(無頭結點的l,編譯器可以正確通過)

elementtype findkth(list l,int k)

if(cnt==k&&p)

return p->data;

else

return error;

##第二種(有頭結點的l,是錯誤的,我沒有真正理解帶有頭結點l與不帶有頭結點l的遍歷)

(編譯器可以正確通過)

elementtype findkth(list l,int k)

if(cnt==k-1&&p)

return p->data;

else

return error;

##第三種(帶有頭結點l的按序查詢)

未完。。。

鏈式表的按序號查詢

本題要求實現乙個函式,找到並返回鏈式表的第k個元素。函式介面定義 elementtype findkth list l,int k 其中list結構定義如下 typedef struct lnode ptrtolnode struct lnode typedef ptrtolnode list l是...

鏈式表的按序號查詢

本題要求實現乙個函式,找到並返回鏈式表的第k個元素。elementtype findkth list l,int k 其中list結構定義如下 typedef struct lnode ptrtolnode struct lnode typedef ptrtolnode list l是給定單鏈表,函...

鏈式表的按序號查詢

本題要求實現乙個函式,找到並返回鏈式表的第k個元素。elementtype findkth list l,int k 其中list結構定義如下 typedef struct lnode ptrtolnode struct lnode typedef ptrtolnode list l是給定單鏈表,函...