Given1->2->3->4
, you should return the list as2->1->4->3
.
class Solution {
public:
// 类似于每k个节点 反转 用栈的存储值方法和一次遍历
ListNode* swapPairs(ListNode* &head) {
if(head==NULL||head->next==NULL){
return head;
}
stack<int> st;
ListNode *h=head;
while(h){
ListNode *temp=h;
for(int i=0;i<2;++i){
if(h!=NULL){ // 不能h->next 来判断
st.push(h->val);
h=h->next;
}else{
return head;
}
}
while(!st.empty()){
temp->val=st.top();
temp=temp->next;
st.pop();
}
}
return head;
}
};