复杂度O(n)倒转链表

 1 public class ListNode {
 2      int val;
 3      ListNode next;
 4      ListNode(int x) { val = x; }
 5      ListNode(){}
 6
 7       public static ListNode revese(ListNode input)
 8     {
 9         ListNode head = new ListNode();//头插法的头
10         ListNode cur = input;                 //指向当前位置
11         ListNode headnext , next;          //两个龙套用于记下next
12         while (cur != null)
13         {
14             headnext = head.next;   //龙套1登场
15                 next = cur.next;             //龙套2登场
16             head.next = cur;            //cur插到头后边
17             cur.next = headnext;      //连接龙套1
18             cur = next;                    //龙套2变成当前位置
19         }
20         return head.next;
21     }
22 }
时间: 2024-10-12 22:20:01

复杂度O(n)倒转链表的相关文章

C实现通用数据结构--单链表

单链表概述 单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始. 从概念上讲,可以把链表想象成一系列连续的元素,然而,由于这些元素是动态分配的(C语言中使用malloc),切记这些元素通常实际上都是分散在内存空间的 本文地址:http://www.cnblogs.com/archimedes/p/c-datastruct-linklist.html,转载请注明源地址. 单链表的接口定义: 1.list_init void list_init(Li

每天一个小算法(3)----倒序打印链表

这个比较简单,用栈.递归.倒转链表都可以实现,不再过多解释. 代码使用递归实现 1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 typedef struct Node 5 { 6 int data; 7 Node* next; 8 }Node, *List; 9 10 11 List createList(int num) //随机生成数字,构造链表 12 { 13 List aList

[Leetcode] Merge k sorted lists 合并k个已排序的链表

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 思路:这题最容易想到的是,(假设有k个链表)链表1.2合并,然后其结果12和3合并,以此类推,最后是123--k-1和k合并.至于两链表合并的过程见merge two sorted lists的分析.复杂度的分析见JustDoIT的博客.算法复杂度:假设每个链表的平均长度是n,则1.2合并,遍历2n个

双端链表

双端链表 链表作为数组之外的一种常用序列抽象, 是大多数高级语言的基本数据类型, 因为 C 语言本身不支持链表类型, 大部分 C 程序都会自己实现一种链表类型, Redis 也不例外 —— 实现了一个双端链表结构. 双端链表作为一种常见的数据结构, 在大部分的数据结构或者算法书里都有讲解, 因此, 这一章关注的是 Redis 双端链表的具体实现, 以及该实现的 API , 而对于双端链表本身, 以及双端链表所对应的算法, 则不做任何解释. 读者如果有需要的话,可以参考维基百科的双端链表词条,里面

剑指offer之链表

//剑指offer 之 链表 //面试题6 从尾到头打印链表 /***************************************************************************************** 问题描述: 输入一个链表的头节点,从尾到头反过来打印出每个节点的值 链表节点定义如下: struct ListNode{ int m_nValue; ListNode* m_pNext; }; *******************************

数据结构基础知识1

一. 理解并能快速.准确写出代码.(★★★★★) 1. 几种常见排序( 代码 ) 基于比较的排序算法: 下界是 nlgn 1.1 SelectionSort:每次选出最下的元素,放在当前循环最左边的位置. 1.2 BubbleSort:每次比较相邻的两个数,使得最大的数像气泡一样冒到最右边. 1. 3 InsertionSort:每次拿起一个数,插入到它左边数组的正确位置. 1.4 QuickSort:选择一个数,作为标准,小于它的放在左边,大于它的放在右边.并把它放在中间:递归地对左右子数组进

Kafka之Purgatory Redesign Proposal (翻译)

Purgatory是Kafka server中处理请求时使用的一个重要的数据结构.正好研究ReplicaManager源码的时候发现了这篇文章,顺便翻译下.由于这个proposal里的很多东西需要看源码才能理解得比较清楚,但是代码还是比较多的,所以先大概讲一下其中的一些概念和原理,以便于阅读接下来的文章. 1. purgatory是用于缓存一些 delayed request的.这些请求因为一些条件得不到满足,所以需要先放到purgatory里,等到条件满足了,再从里边移出来. 2. 这些req

完成端口————留着看

[置顶] 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三 分类: VC网络编程基础2011-11-01 08:17 75535人阅读 评论(366) 收藏 举报 网络编程socketnull服务器windows 手把手叫你玩转网络编程系列之三    完成端口(Completion Port)详解                                                              ----- By PiggyXP(小猪) 前

《剑指offer》题解

有段时间准备找工作,囫囵吞枣地做了<剑指offer>提供的编程习题,下面是题解收集. 当初没写目录真是个坏习惯(-_-)||,自己写的东西都要到处找. 剑指Offer - 九度1524 - 复杂链表的复制 剑指Offer - 九度1509 - 树中两个结点的最低公共祖先 剑指Offer - 九度1508 - 把字符串转换成整数 剑指Offer - 九度1504 - 把数组排成最小的数 剑指Offer - 九度1503 - 二叉搜索树与双向链表 剑指Offer - 九度1390 - 矩形覆盖 剑