給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
輸入:head = [1,2,3,4]
輸出:[2,1,4,3]
輸入:head =
輸出:
輸入:head = [1]
輸出:[1]
/**
* definition for singly-linked list.
* function listnode(val, next)
*//**
* @param head
* @return
*/ var headnode = new listnode(null, head);
var pre = headnode;
var cur = head;
while(cur && cur.next)
return headnode.next;
};
通過迭代的方式實現兩兩交換鍊錶中的節點,直接遍歷整個鍊錶即可,首先定義乙個空的頭結點,之後定義前置節點與當前正需要處理的節點,當正在處理的節點存在以及當前節點的下乙個節點都存在時進行迴圈,將當前節點與當前節點的下乙個節點進行快取,之後將curnode
節點的next
賦值為nextnode
節點的next
,即首先將該節點的下乙個節點指向nextnode
的下乙個節點,之後將prenode
的next
賦值為nextnode
,將nextnode
的next
賦值為curnode
,最後將prenode
賦值為curnode
,curnode
賦值為curnode
的next
,注意此時的curnode
其實已經被交換換成了,是兩個節點中的後乙個節點,最後等待迴圈完成後返回頭結點的next
即可。
兩兩交換鍊錶中的節點
給乙個鍊錶,兩兩交換其中的節點,然後返回交換後的鍊錶。樣例 給出 1 2 3 4,你應該返回的鍊錶是 2 1 4 3。遞迴方式 交換p 和 p.next 結點 swaphead p.next swaphead.next p definition for singly linked list.publ...
兩兩交換鍊錶中的節點
給乙個鍊錶,兩兩交換其中的節點,然後返回交換後的鍊錶。給出1 2 3 4,你應該返回的鍊錶是2 1 4 3。首先這個鍊錶只能交換偶數個資料,如果有奇數個資料則最後乙個資料不進行交換。做乙個迴圈將資料兩個兩個的交換,每交換完一次都要往後迭代。definition for singly linked l...
兩兩交換鍊錶中的節點
題目 給乙個鍊錶,兩兩交換其中的節點,然後返回交換後的鍊錶。樣例 給出1 2 3 4,你應該返回的鍊錶是2 1 4 3。思路 兩兩交換節點乍一看好像就是交換兩個節點的位置,仔細想一想交換的是數值,兩個一組兩個一組,只要head next不是null,或者head不是null就可以交換倆個節點的值,h...