单向链表反转
来源:互联网 发布:移民澳大利亚知乎 编辑:程序博客网 时间:2024/04/28 08:52
如何将一个单向链表反转?
这是很多IT公司笔试面试常考察的一个基本数据结构题目。
上周的面摩根IT还被问过了这道题目,不过当时我写的不好。
这里重新梳理一下。
不多说了,从定义数据结构开始吧。
typedef struct ListNode{int val;ListNode* next;}ListNode;
1. 非递归方法
传统的一个思路是用三个指针:一个指针指向新链表的头节点(newListHead),一个指针指向当前正在处理的节点(curNode),另一个一个指针指向原来链表的剩余部分的头节点(nextHead)。然后遍历链表。
ListNode* reverseList{ListNode *head}{if(head == NULL || head->next == NULL){return head;}ListNode *newListHead = NULL;ListNode *curNode = head;ListNode *nextHead = NULL;while(curNode != NULL){nextHead = curNode->next; curNode->next = newListHead;newListHead = curNode;curNode = nextHead;}}
0 0
- 单向链表反转
- 反转单向链表
- 单向链表反转
- 单向链表反转
- 单向链表反转
- 反转单向链表
- 反转单向链表
- 反转单向链表
- 反转单向链表
- 单向链表反转
- 单向链表反转
- 单向链表反转
- 单向链表反转
- 反转单向链表
- 单向链表反转
- 反转单向链表
- 反转单向链表
- 反转单向链表
- 第三章 课后编程
- 二进制十六进制相互转换
- 关于"__IO uint32_t" 中的__IO 表达的意思
- 【java】for循环输出数字金字塔
- hdu3065 病毒侵袭持续中--AC自动机
- 单向链表反转
- Ubuntu10.04中安装TinyOS2.x后的几处错误处理
- 查询数据库锁和程序未释放的连接
- 互联网的未来,我将会不断拼搏——成佩涛cpthack
- 电话面试准备
- 折半插入排序
- 一个基础的for循环面试题
- 编译器会自动生成default constructor,这是真的吗?
- Apache+Tomcat集群配置