您的位置:首页 > 其它

LinkedList与链表反转

2016-04-12 16:14 246 查看
题一:取出LinkedList的中间数

LinkedList底层是链表Node(E).

常用函数有size(), add(), clear(), contain(), get(), getFirst(), getLast().

用size = list.size(), list.get(size/2)即取出中间数的element.

题二:链表反转

对于一个链表,实现反转。比如: a -> b -> c ->d 反过来就是 d -> c -> b -> a 。

java源码如下:

class Node{
char value;
Node next;
}

//非递归实现
public Node reverse(Node current) {
Node previous = null;
Node next = null;

while (current != null) {
//存储下一节点
next = current.next;
current.next = previous;		//反转

//更新遍历节点
previous = current;
current = next;
}

return current;
}

还有一种方法:利用Collecionts.reverse(List<?> list)

java源码如下:

<pre name="code" class="java"> List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}

System.out.println();

Collections.reverse(list);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i));
}



运行结果如下:

12345

54321

补充说明:链表反转还有一种递归方式,留作以后学习,见文献1。

参考文章:

1、http://blog.csdn.net/beiyetengqing/article/details/7596554
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表 反转