美文网首页算法
数据结构之 swift 实现链表反转

数据结构之 swift 实现链表反转

作者: 哈尔湖 | 来源:发表于2018-04-10 22:31 被阅读101次

链表反转很熟悉的面试题,关于链表的基础知识就不再累赘了,如何swift实现链表的反转。

  • 传入链表的头结点 返回一个翻转后的头结点
  • 两个指针遍历反转
//定义链表节点
class ListNode {
    var val: Int
    var next: ListNode?
    
    init(_ val: Int) {
        self.val = val
        self.next = nil
    }
}
  • 反转函数
    func reverList( node: ListNode) -> ListNode {
        
        var last: ListNode?
        var next: ListNode?
        var nodeH: ListNode? = node
        
        while nodeH != nil  {//nodeH 依次尾部移动, nodeH.next 总是last ,中间变量next 为了记录nodeH要向前移动的位置。
            next = nodeH?.next
            nodeH?.next = last
            last = nodeH
            nodeH = next
            
        }
        //循环结束的条件是nodeH == nil 所以头结点是last
        return last!
        
    }

  • 测试代码
        let alist = ListNode(1)
        let blist = ListNode(2)
        let clist = ListNode(3)
        let dlist = ListNode(4)
        
        alist.next = blist
        blist.next = clist
        clist.next = dlist
        
        let newlist = reverList(node: alist)
        
        print("=======\(newlist.val)")
        print("---------\(newlist.next!.val)")

其他算法参见 故胤道长 Swift 算法实战之路:链表

相关文章

  • 无标题文章

    Swift算法俱乐部:Swift 链表数据结构@(Swift)在本教程中,我们将会在Swift 3中实现链表。##...

  • 数据结构之 swift 实现链表反转

    链表反转很熟悉的面试题,关于链表的基础知识就不再累赘了,如何swift实现链表的反转。 传入链表的头结点 返回一个...

  • 链表反转

    概述 链表反转是非常经典的面试题,要实现此功能,需先实现链表的数据结构。 链表类 获得单向链表方法 输出单向链表方...

  • 数据结构 | 其二 链表

    冰河winner - 数据结构之链表 2.1 单向链表 数据结构(一) 单链表的实现-JAVA 2.2 双端链表 ...

  • 链表简单算法相关练习

    单链表反转: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 迭代方式实现: 复杂度分析: 时...

  • 单链表反转

    单链表反转 单链表初始化 输出 反转 释放 实现代码 尚未实现 元素插入 元素删除

  • iOS 数据结构之链表

    iOS 数据结构之链表 iOS 数据结构之链表

  • 作业三——反转链表

    题目 用代码实现反转链表,要求:不能使用栈数据结构,时间复杂度O(n). 实现 LinkList.h文件代码 ma...

  • 反转链表(java实现)

    链表反转 节点数据结构如下: 链表反转的两种方式:递归和非递归 递归方式如下: 非递归方式如下:

  • Python实现双向链表

    Python实现双向链表的增删改查,反转链表

网友评论

    本文标题:数据结构之 swift 实现链表反转

    本文链接:https://www.haomeiwen.com/subject/oxrohftx.html