一、題目——Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given1->2->3->4, you should return the list as2->1->4->3.
Your algorithm should use only constant space. You may?not?modify the values in the list, only nodes itself can be changed.
二、分析
大家好,我又來了。這次還是鏈表題。根據(jù)題目的意思,就是每對節(jié)點(diǎn)兩兩交換。注意是交換節(jié)點(diǎn),而不是交換節(jié)點(diǎn)的值。那么交換兩個節(jié)點(diǎn)時,我們得讓第一個節(jié)點(diǎn)的前一個節(jié)點(diǎn)的next指向第二個節(jié)點(diǎn),第二個節(jié)點(diǎn)的下一個節(jié)點(diǎn)的next指向第一個節(jié)點(diǎn)。然后讓第二個節(jié)點(diǎn)的next指向第一個節(jié)點(diǎn)。臨界狀態(tài),即第一個節(jié)點(diǎn)是頭結(jié)點(diǎn)。那我們就得相應(yīng)做些特殊的處理,讓第二個節(jié)點(diǎn)成為頭結(jié)點(diǎn)。思路如上,上代碼。