zoukankan      html  css  js  c++  java
  • 链表反转的两个方法(迭代和递归)

    迭代方法

    记录链表中的三个连续节点:reverse ,first,second。在每轮迭代中,从原链表中提取first并将它插入逆链表的开头。一直保持first指向原链表剩余节点的首节点,second指向原链表剩余节点的第二个节点,reverse指向逆链表的首节点

    public Node reverse(Node x) {
    	Node first = x;
    	Node reverse = null;
    	while(first != null) {
    		Node second = first.next;
    		first.next = reverse;
    		reverse = first;
    		first = second;
    		}
    	return reverse;
    	}
    

    递归方法

    假设含有N个节点,先递归颠倒最后N-1个节点,然后将链表的首节点插入到结果的链表的末端

    public Node reverse(Node first) {
    	if(first == null) 
    		return null;
    	if(first.next != null) 
    		return first;
    	Node second = first.next;
    	Node rest = reverse(second)
    	second.next = first;
    	first.next = null;
    	return rest;
    	}
    
  • 相关阅读:
    PL/SQL编程急速上手
    MySQL编程
    T-SQL编程
    SQL入门,就这么简单
    前端工具配置(webpack 4、vue-cli 3)
    Vue-router
    Vue组件应用
    Vue.js应用基础
    Bootstrap应用核心
    一篇文章教会你jQuery应用
  • 原文地址:https://www.cnblogs.com/dwwzone/p/12859256.html
Copyright © 2011-2022 走看看