给定一个链表,交换每两个相邻节点并返回其头部。
来源:互联网 发布:网络版权保护 编辑:程序博客网 时间:2024/05/29 18:53
本题源自leetcode 24
----------------------------------------------------------------------
思路1: 创建一个头节点。然后从头结点之后开始遍历,每次翻转俩个节点,并保留前驱指针。最后返回头结点的下一个节点。
思路2: 用一个指针的指针来保留第一个节点。每次交换完,把双指针节点更新为下一次要交换的第一个节点。
代码:
ListNode* swapPairs(ListNode* head) { /* if(head==NULL||head->next==NULL) return head; ListNode* root=new ListNode(0); root->next=head; ListNode* pre=root; ListNode* p=head; ListNode* pNext=NULL; while(p&&p->next!=NULL){ pNext=p->next; p->next=pNext->next; pNext->next=pre->next; pre->next=pNext; pre=p; p=p->next; } return root->next; */ if(!head || !head->next) return head; ListNode** p=&head; ListNode*a,*b; while((a=*p)&&(b=a->next)){ a->next=b->next; b->next=a; *p=b; p=&(a->next); } return head; }
阅读全文
0 0
- 给定一个链表,交换每两个相邻节点并返回其头部。
- 交换链表相邻节点
- 求给定的两个数组的公共元素,并将其返回为一个数组
- 24. Swap Nodes in Pairs(每两个相邻节点进行一次交换)
- 给定一个链表,一次颠倒链表k的节点并返回其修改列表。如果节点的数量不是k的倍数,那末最后的剩余节点应该保持原样。
- 交换链表中的相邻节点
- 交换单向链表的相邻节点
- 单链表相邻两个节点之间交换顺序
- Swap Nodes in Pairs 链表交换相邻的节点
- leetcode交换相邻的两个节点的值
- 剑指offer--给定一个链表,从尾部到头部打印,输出链表节点的值
- 交换链表当中两个节点
- LintCode 交换链表当中两个节点
- LintCode:交换链表当中两个节点
- LintCode-交换链表当中两个节点
- 511- 交换链表当中两个节点
- LintCode 交换链表当中两个节点
- LintCode:交换链表当中两个节点
- 各大平台的推荐系统原来是靠他来完成的,太牛了
- 六款互联网人不容错过的软件神器
- Go并发编程之channel
- Spring Boot入门
- spring boot实战(第七篇)内嵌容器tomcat配置
- 给定一个链表,交换每两个相邻节点并返回其头部。
- 复杂网络问答
- HashMap的面试题你能回答几个?
- NSTableVIew加载下拉框、勾选框和拖拽换行
- solr -- 安装及配置
- NSOperation 并发实现
- 《机器学习实战》学习笔记(四)之Logistic(上)基础理论及算法推导、线性回归,梯度下降算法
- redis(3)
- Zabbix 监控 Mysql