反转单链表的几种方法
2015-07-24 16:34
316 查看
反转单链表的几种方法
最近试着做一些笔试面试题,既是为来年找工作做准备,也可以做为数据结构和算法的复习笔记,就陆续发在这里吧,有需要的朋友可以看一下,如果有没考虑周全的地方欢迎指正。关于头指针的问题:
你只要理解链表的中带不带头节点的问题 带头结点就多了一个空的结点指向第一个结点; 不论有没有头结点,而头指针则是指向第一个结点
先来一个最常见的题目:反转单链表。假设单链表的数据结构定义如下:
最容易想到的第一种方法就是重新建立一个单链表newList,每次将list中的第一个结点放到newList后面。注释比较详细,所以就不具体说了,直接看代码吧:
为了反转这个单链表,我们先让头结点的next域指向结点2,再让结点1的next域指向结点3,最后将结点2的next域指向结点1,就完成了第一次交换,顺序就变成了Header-结点2-结点1-结点3-结点4-NULL,然后进行相同的交换将结点3移动到结点2的前面,然后再将结点4移动到结点3的前面就完成了反转,思路有了,就该写代码了:
我只想到这三种方法,如果你还知道其它方法,欢迎留言告诉我,多谢。
相关文章推荐
- 一个关于if else容易迷惑的问题
- Lua教程(七):数据结构详解
- 一道sql面试题附答案
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- C# 超高面试题收集整理
- 数据结构之Treap详解
- 人人网javascript面试题 可以提前实现下
- JavaScript数据结构和算法之图和图算法
- PHP中设置一个严格30分钟过期Session面试题的4种答案
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- 据说是雅虎的一份PHP面试题附答案
- php牛逼的面试题分享
- 一套比较完整的javascript面试题(部分答案)
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force