问题描述: 定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结点定义如下: struct ListNode{ int m_nKey; ListNode* m_pNext; } 分析: 这个问题看起来与之前做的从尾到头打印链表看起来很相似,都是链表的“逆序”。但不同的是,这 ...
分类:
其他好文 时间:
2017-04-24 14:02:06
阅读次数:
136
题目描述: 输入一个链表的头结点,从尾到头打印链表每个节点的值。 /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ 分析 ...
分类:
其他好文 时间:
2017-04-24 14:01:47
阅读次数:
144
算法概述:要求实现将一条单向链表反转并考虑时间复杂度。 算法分析: 数组法(略): 将列表元素逐个保存进数组,之后再逆向重建列表 点评:实现逻辑最简单,需要额外的内存开销。 移动指针: 通过三个指针逐个从链表头开始逐一反转链表元素的指针 点评:不需要额外的内存开销,会改变原始链表。 递归: 以递归的 ...
分类:
编程语言 时间:
2017-04-16 17:01:37
阅读次数:
137
题目:输入一个链表,反转链表后,输出链表的所有元素。 思路:逐个扫描,翻转指针。。。个人认为翻转链表的操作是链表题目中最难最考验指针的操作。。。。 ...
分类:
其他好文 时间:
2017-04-08 16:16:05
阅读次数:
136
节点类: 反转链表: 注意: 1. 反转链表时,一定要保存node(当前操作节点)的下一个节点,否则链表就会断开; 2. 注意反转的顺序,首先保存下一节点p,其次将node的next指向前一节点b,然后将b向前移动到node,最后将node向前移动到p。 ...
分类:
其他好文 时间:
2017-03-22 23:13:40
阅读次数:
150
1 package com.algorithm; 2 3 //输入一个链表,反转链表后,输出链表的所有元素。 4 public class ReverseListMe { 5 6 public ListNode ReverseList(ListNode head) { 7 //运行时间:36ms 占... ...
分类:
其他好文 时间:
2017-03-08 11:21:03
阅读次数:
133
题目大意:原题链接 关键是正确理解题目意思 首先:介绍一下list容器的一些操作:参考链接 list<int> c1; c1.unique(); 去重。 c1.reverse(); 反转链表。 c1.insert(pos,num); 在pos位置插入元素num。 c1.insert(pos,n,nu ...
分类:
其他好文 时间:
2017-03-03 01:02:35
阅读次数:
165
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 9 class Solution { 10 public: 11 Li... ...
分类:
其他好文 时间:
2017-02-27 16:41:30
阅读次数:
152
输入一个链表,反转链表后,输出链表的所有元素 ...
分类:
其他好文 时间:
2016-12-07 22:59:03
阅读次数:
131
链表反转有两种常见方式。下面从图中详细解释。其中带有部分核心代码,最后上完整代码。 迭代法 //首先定义三个变量 PNODE pre = NULL; PNODE now = pHead->pNext; PNODE next = NULL; next = now->pNext;//先保存下一个节点 n ...
分类:
其他好文 时间:
2016-11-23 06:46:03
阅读次数:
326