两两交换链表中的节点
对于链表题的注意事项:
1.对于跳跃型的链表需要判断node!=NULL&&node->next!=NULL
2.操作链表的时候需要的时候一定要要拷贝一份头指针
3.需要拷贝一下下一个节点,因为可能会因为删除next指针导致断链了
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* swapPairs(ListNode* head)
{
//两两交换链表的节点,思路是什么呢
ListNode* newhead_y = new ListNode(-1);//定义一个新的头结点
ListNode* newhead = newhead_y;//定义一个新的头结点
ListNode* node = head;
ListNode* nextnode = NULL;
newhead->next = node;
while(node!=NULL&&node->next!=NULL)
{
nextnode = node->next->next;
ListNode* nextnode_1 = node->next;
node->next = NULL;
newhead->next =nextnode_1;
nextnode_1->next = node;
newhead = node;
node = nextnode;
newhead->next = node;
}
return newhead_y->next;
}
};