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是給定單鏈表,函...