Swap Nodes in Pairs
2015-08-30 15:54
477 查看
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->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
思路:题目不难,假设交换p与q(p在前)需要知道p前面的指针,因此需要三个指针,注意交换头部,以及链表长度为奇数的情况。代码如下:
For example,
Given 1->2->3->4, you should return the list as 2->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
思路:题目不难,假设交换p与q(p在前)需要知道p前面的指针,因此需要三个指针,注意交换头部,以及链表长度为奇数的情况。代码如下:
/** * 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) { if(head == NULL || head->next == NULL)//空或者长度为1 return head; ListNode *p, *q, *pre; pre = p = head; q = p->next; while(q){ if(p == head){//交换头 p->next = q->next; q->next = p; head = q; } else{ pre->next = q; p->next = q->next; q->next = p; } //移动 if(p->next){//没有到结尾 pre = p; p = p->next; q = p->next; } else break; } return head; } };
相关文章推荐
- LeetCode-Count Complete Tree Nodes
- nodejs处理get请求
- 一步一步讲解安装NodeJs开发环境
- Nodejs初阶之express
- leetcode_019Remove Nth Node From End of List
- btrfs连载(一)inode.c之btrfs_create函数
- LeetCode Swap Nodes in Pairs
- LeetCode Swap Nodes in Pairs
- 2015-08-04个人定制(nodejs中的循环陷阱)
- HDFS架构——NameNode
- 25 Reverse Nodes in k-Group
- Leetcode 222: Count Complete Tree Nodes
- Delete Node in a Linked List 单链表删除节点
- NodeJS 读取XML文件
- LeetCode2.2.9(Reverse Nodes in k-Group)
- LeetCode2.2.8(Swap Nodes in Pairs)
- LeetCode2.2.7(Remove Nth Node From End of List)
- 在Ubuntu上安装Node.js的Upstream版本
- Delete Node in a Linked List
- LeetCode Remove Nth Node From End of List