資料結構 鍊錶基礎練習題

2022-05-12 19:08:22 字數 1940 閱讀 8387

1、反轉鍊錶

定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。

/*

* * definition for singly-linked list.

* function listnode(val) */

/*** @param head

* @return */

var reverselist = function

(head)

return

prev;

};

2、刪除鍊錶的某個節點

給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。

/*

* * @param head

* @param val

* @return */

var deletenode = function

(head, val)

else

}return

res.next;//此時不能返回now,此時now指向鍊錶最後乙個元素。

};

3、合併排序後的鍊錶

輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的節點仍然是遞增排序的。

/*

* * @param l1

* @param l2

* @return */

var mergetwolists = function

(l1, l2)

else

res=res.next;//

res往後移

} res.next=l1==null?l2:l1;//最後

res指向不為空的鍊錶

return dum.next;//

不能返回res

};

4、鍊錶中倒數第k個數。

給定乙個鍊錶: 1->2->3->4->5, 和 k = 2.返回鍊錶 4->5.
/*

* * @param head

* @param k

* @return */

var getkthfromend = function

(head, k)

else

}return

slow;//slow既為返回結果

};

5、環形鍊錶

給定乙個鍊錶,判斷鍊錶中是否有環。

/*

* * @param head

* @return */

var hascycle = function

(head)

}return

false

;};

6、鍊錶陣列【中等】

給定煉表頭結點 head,該鍊錶上的每個結點都有乙個唯一的整型值 。同時給定列表 g,該列表是上述鍊錶中整型值的乙個子集。返回列表 g 中元件的個數,這裡對元件的定義為:鍊錶中一段最長連續結點的值(該值必須在列表 g 中)構成的集合。

輸入: 

head: 0->1->2->3->4

g = [1,3,4]

輸出: 2.

共有兩個連續陣列。1是乙個連續陣列,3、4是乙個連續陣列。

/*

* * @param head

* @param g

* @return */

var numcomponents = function

(head, g)

isconnect=true

; }

else

head=head.next;

}return

num;

};

資料結構 鍊錶 練習題1

2.已知乙個帶表頭結點的單鏈表,結點結構為data link,假設該鍊錶只給出了頭指標list。在不改變鍊錶的前提下,請設計乙個盡可能高效的演算法,查詢鍊錶中倒數第k個位置上的結點 k正為整數 若查詢成功,演算法輸出該結點的data域的值,並返回1 否則,只返回0.要求 1 描述演算法的基本設計思想...

資料結構練習題

設pa,pb分別指向兩個帶頭結點的有序 從小到大 單鏈表。仔細閱讀如下的程式,並回答問題 1 程式的功能 2 s1,s2中值的含義 3 pa,pb中值的含義。include include typedef struct list list void exam list pa,list pb else...

鍊錶練習題

鍊錶 這裡我記錄了鍊錶的各種操作的演算法,在後面的習題中會涉及到這些演算法的思路。leetcode206.反轉鍊錶 反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null反序的演算法之前記錄過,可以就地反序,也可以使用棧反序,這裡為了節省時間和空間,就用就地反序...