1. 程式人生 > >【Java】LinkedList遞迴翻轉

【Java】LinkedList遞迴翻轉

我的程式碼:(為了測試寫成了Integer類的list)

public static LinkedList<Integer> reverse(LinkedList<Integer> list){
		if(list==null){
			throw new NullPointerException("無法翻轉空列");
		}
		if(list.size()==1){
			return list;
		}
		int i = list.removeFirst();
		reverse(list).add(i);
		return list;
	}

書上的程式碼:
public static <T> LinkedList<T> reverse(final LinkedList<T> original){
    if(original == null){
        throw new NullPointerException("Cannot reverse a null list");
    }

    if(original.getNext() == null){
        final LinkedList<T> next = original.next;
        original.next = null;

        final LinkedList<T> otherReversed = reverse(next);

       next.next = original;

        return otherReversed;


相關推薦

JavaLinkedList翻轉

我的程式碼:(為了測試寫成了Integer類的list) public static LinkedList<Integer> reverse(LinkedList<Integer&g

函式和常用模組day04(五)

本節內容 作用域、區域性和全域性變數 遞迴 函數語言程式設計 高階函式和eval()函式 一、概述 在函式內部,可以呼叫其他函式。但是一個函式在內部呼叫自身,這個函式被稱為遞迴函式。 二、簡單介紹 那遞迴具體是怎麼實現的吶?下面我們就來看看如下程式碼:

11python

   一、遞迴原理小案例分析 (1)# 概述 遞迴:即一個函式呼叫了自身,即實現了遞迴 凡是迴圈能做到的事,遞迴一般都能做到!     (2)# 寫遞迴的過程 1、寫出臨界條件 2、找出這一次和上一次關係 3、假設當前函式已經能用,呼叫自身計算

181113VC++法實現簡單分形圖形示例程式原始碼

原始碼下載簡介 VC++遞迴法實現簡單分形圖形示例程式,比如扣氏曲線類定義等。大家在C/C++學習時都會遇到遞迴,課本上以汗諾塔為例進行講解,然後大家都希望自己找到一個遞迴的例項。本程式碼以一個最簡單

C入門專題)

最近隨著C語言的學習,接觸到一種特殊的思想---------遞迴 本章專門又來總結遞迴的思想已經遞迴的使用方式,在學習這裡是我想到一個特別的東西用來了解遞迴——————俄羅斯套娃!!! 聽我細細道來 就是這個很妖嬈的東西幫助我們瞭解遞迴。 假如,你面前有一組套娃,現在想知道它們有多少個但是每

Scala優化

以遞迴方式思考 遞迴通過靈巧的函式定義,告訴計算機做什麼。在函數語言程式設計中,隨處可見遞迴思想的運用。 下面給出幾個遞迴函式的例子: object RecursiveExample extends App{ // 數列求和例子 def sum

thinkphpthinkphp迴圈欄目按照樹形結構無限極輸出

thinkphp遞迴迴圈欄目按照樹形結構無限極輸出,並儲存為一個數組,利於模板呼叫 private function  categoryTree($parentid,$level)   //因為是本類中使用所以定於為私有函式 { $Category= D('

函式的正確思維方法

遞迴是程式設計中一個相對難以理解但是卻又很重要的概念. 對於從命令式語言開始學習程式設計的程式設計師天生對此有理解缺陷, 而對於從類似C++這種對函數語言程式設計正規化不友好的語言開始學習程式設計的程式設計師就更加如此了.(比如我自己) 碰巧(其實不巧)最近

C++的三種二叉樹遍歷

 二叉樹的遍歷有三種方式,如下: (1)前序遍歷(DLR),首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根-左-右。 (2)中序遍歷(LDR),首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左-根-右。 (3)後序遍歷(LRD),首先遍歷左子樹,然後遍歷右

Java 歸併排序的非實現 資料結構與演算法合集 資料結構與演算法合集

  歸併排序可以採用遞迴方法(見:歸併排序),但遞迴方法會消耗深度位O(longn)的棧空間,使用歸併排序時,應該儘量使用非遞迴方法。本文實現了java版的非遞迴歸併排序。 更多:資料結構與演算法合集 思路分析   遞迴排序的核心是merge(int[] arr, int start, int mid,

java歸統計本地磁盤所有文件,提取重復文件,JDK8 map叠代

this ash down logs out 文件名 pub new 重復 package com.sxd.createDao; import java.io.File; import java.time.LocalDateTime; import java.util.

Java推的應用

程序 賦值 sys next 關系 src 大小 blog 圓盤 利用階乘公式來計算組合式: 程序設計思想: 根據公式來計算組合數的大小,從鍵盤輸入n,k的值,設計一個計算階乘的大小,如果輸入的數a為1或0,則直接return 1,否則運用遞歸,計算a-1的階乘,直到a為1

Java快速排序的非歸實現

scrip swa java版 sys ext 遞歸實現 ref src 分享   快速排序一般采用遞歸方法(詳見快速排序及其優化),但遞歸方法一般都可以用循環代替。本文實現了java版的非遞歸快速排序。 更多:數據結構與算法合集 思路分析   采用非遞歸的方法,首

hdu 5728 PowMod數論尤拉函式尤拉降冪取模尤拉積性函式

【連結】 http://acm.hdu.edu.cn/showproblem.php?pid=5728 【題意】 n是無平方因子的數 定義k=∑mi=1φ(i∗n) mod 1000000007,求K^k^k^k......%p 【思路】 先尤拉性質求出k

Java 劍指offer(58-1) 翻轉單詞順序

牛客網 valueof 收獲 java ring 額外 null 翻轉 順序 本文參考自《劍指offer》一書,代碼采用Java語言。 更多:《劍指Offer》Java實現合集 題目   輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。為簡單

Java 歸並排序的非歸實現

實現 print 思路 [] pub () java版 demo 定義   歸並排序可以采用遞歸方法(見:歸並排序),但遞歸方法會消耗深度位O(longn)的棧空間,使用歸並排序時,應該盡量使用非遞歸方法。本文實現了java版的非遞歸歸並排序。 更多:數據結構與算法合集

py目錄 4.1演算法 冒泡,選擇插入排序

    Python開發【第二篇】:初識Python Python開發【第三篇】:Python基本資料型別 Python開發【第四篇】:Python基礎之函式    &&【4.1】演算法遞迴 冒泡

資料結構與演算法的基本介紹---第六篇

一、遞迴的基本概念 1、定義 遞迴:指的是一個過程,函式直接或者間接的呼叫自己,此時則發生了遞迴。 遞迴的兩個要素:遞推公式和遞迴邊界 可以看到遞迴的定義非常的簡潔,但是理解起來就沒有這麼容易了。不知道大家是否和我一樣,在遇到遞迴問題的時候,總是試圖去一步一步的分

資料結構週週練010 演算法實現二叉樹的建立與遍歷

一、前言 上兩篇週週練部落格講了二叉樹的建立與遍歷,建立時,通過建立棧來存放結點,方便二叉樹的建立,這種建立二叉樹的方式採用了非遞迴演算法,本次內容採用遞迴的方式來建立二叉樹,大家可以通過對比程式碼量,感受一下遞迴的魅力。同時遍歷過程也是通過遞迴演算法。 如果大家第一次看

hdu 5728 PowMod數論尤拉函式尤拉降冪取模尤拉積性函式

【連結】 【題意】 n是無平方因子的數 定義k=∑mi=1φ(i∗n) mod 1000000007,求K^k^k^k......%p 【思路】 先尤拉性質求出k,再用尤拉降冪,A^B=A^B%phi(C)+phi(C)  (mod C)求出答案 ∑(i=1~