• 列表反转与深度反转


    列表反转的意思是将一个列表逆序过来,比如(list 1 2 3) -> (list 3 2 1)

    实现的时候最直接的想法是先将除了第一个元素意外的子表反转,然后将第一个元素接到后面去,但是在scheme中没有提供将一个元素append到某个list的结尾。

    因此使用头插入的办法,遍历要反转的表的第一个元素,用cons操作插入到结果的表的头部。

    (define (reverse-list ll)
      (define (reverse-list-iter r remain)
        (if (null? remain)
          r
          (reverse-list-iter (cons (car remain) r) (cdr remain))))
      (reverse-list-iter () ll))
    深度反转是表中每个元素的子表也要反转过来,比如(list (list 1 2) (list 3 4) 5) -> (list 5 (list 4 3) (list 2 1))实现的思路跟反转差不多,多了一个判断,当表的第一个元素是本身也是表的话递归进去反转之
    (define (deep-reverse-list ll)
      (define (deep-reverse-list-iter r remain)
        (cond ((null? remain) r)
              ((not (pair? (car remain)))
               (deep-reverse-list-iter (cons (car remain) r) (cdr remain)))
              (else (deep-reverse-list-iter (cons (deep-reverse-list-iter () (car remain)) r) (cdr remain)))))
      (deep-reverse-list-iter () ll))

  • 相关阅读:
    (十)jQuery对表单、表格的操作
    (九)jQuery中的动画(载)
    (八)jQuery中的事件
    (七)jQuery中的DOM操作
    (六)jQuery选择器
    (五)解决jQuery和其它库的冲突
    (四)DOM对象和jQuery对象
    (三)初识jQuery
    (二)关于jQuery
    (一)关于jQuery的网上资源
  • 原文地址:https://www.cnblogs.com/mathlover/p/2685938.html
Copyright © 2020-2023  润新知