Leetcode016--链表相邻元素进行交换
2016-12-07 13:01
1051 查看
一、原题
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
一、中文
给定一个单链表,成对交换两个相邻的结点。算法法应该做常量辅助空间,不能改结点的值,只能交换结点。
1,3,5,7 和交换之后就是3,1,7,5了
首先建立一个新的链表的头结点指向已有链表的结点,再建立一个指向链表尾结点的指针P,指向链表的尾结点,然后进行交换。
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.
一、中文
给定一个单链表,成对交换两个相邻的结点。算法法应该做常量辅助空间,不能改结点的值,只能交换结点。
三、举例
1,3,5,7 和交换之后就是3,1,7,5了
四、思路
首先建立一个新的链表的头结点指向已有链表的结点,再建立一个指向链表尾结点的指针P,指向链表的尾结点,然后进行交换。
五、程序
package LeetCode; class ListNodeSwap { int val; ListNodeSwap next; ListNodeSwap() {} ListNodeSwap(int x) { val = x; next = null; } } public class Leetcode017 { public static void main(String args[]){ ListNodeSwap n1 = new ListNodeSwap(1); ListNodeSwap n2 = new ListNodeSwap(2); ListNodeSwap n3 = new ListNodeSwap(3); ListNodeSwap n4 = new ListNodeSwap(4); n1.next = n2; n2.next = n3; n3.next = n4; ListNodeSwap list = new ListNodeSwap(); list = MergeTwoList(n1); while(list != null){ System.out.print(list.val+" "); list = list.next; } } /** * 将链表的相邻元素进行两两交换 */ public static ListNodeSwap MergeTwoList(ListNodeSwap head) { if(head == null){ return null; } //建立一个新的链表用于存储 ListNodeSwap root = new ListNodeSwap(); root.next = head; //p指向链表的尾结点 ListNodeSwap p = root; ListNodeSwap tmp; while(p.next != null &&p.next.next != null){ //下一次要处理的位置 tmp = p.next.next; //通过三个步骤进行交换 p.next.next = tmp.next; tmp.next = p.next; p.next = tmp; p = tmp.next; } head = root.next; root.next = null; return head; } }
相关文章推荐
- 链表相邻元素交换
- 采用选择排序法对链表进行排序,注意交换操作中不是对链表里某一节点里的某一元素进行交换,而是对两节点指针的交换
- 交换单链表中相邻的两个元素 Swap Nodes in Pairs
- 只调整指针来交换两个相邻的元素【双链表】
- 单链表交换相邻元素
- leetcode+交换链表相邻元素,head指向一个元素,只需要交换相邻元素,链表结构不变
- 单双链表,通过指针变动交换相邻元素
- Swap Nodes in Pairs:交换链表数组相邻元素的值
- 线性表的顺序表 实现,及应用-----西文排序+前m个元素和后n个元素进行整体互换+构造纯集合+有序表求纯集合+循环有序链表表示两集合的并集
- 合并两个链表,两个表的元素交叉进行,合并之后合并后的链表变成空表
- C++循环链表中进行元素的翻转
- POJ 2299-Ultra-QuickSort(归并排序求相邻元素的交换次数)
- 两个有序链表(相邻元素可能相同)找出他们交集,并把结果放到另一链表中
- p62 练习3.3 通过只调整指针(而不是数据)来交换两个相邻的元素,使用:
- 交换链表中相邻节点的位置
- 数据结构:交换单链表中的任意两元素--C实现
- 指针p,q,r依次指向某循环链表中三个相邻的结点,交换结点*q,*r在表中次序的程序段是
- Java单链表基本操作(九)--交换相邻节点对的值
- 数组最大元素与最后一位元素进行交换最小元素与第一位元素进行交换,
- 合并两个链表,两个表的元素交叉进行,合并之后合并后的链表变成空表