天天看點

【資料結構】逆轉連結清單

01

前言

資料結構與算法課程是我們學校大二才會開始教學的一門課,但是由于我要參加一些比賽需要用到相關結構與算法,隻得提早學習相關知識,了解相關内容。今天開始,每當自己學會一個相關資料結構的操作與算法的内容,我将在公衆号中記錄下來并且給大家仔細講解。

再給大家講解的過程中我自己也能理清相關思路,加深自己對相關内容的了解,一舉多得。

在大一上學期的内容中,我們學到了單連結清單的構造與輸出,今天想教大家的是單連結清單的逆轉,這裡所有的操作我都将用函數完成,因為在以後的學習或是工作中,我們需要讓自己的代碼簡潔宜讀。這樣才會更好的融入集體并讓集體接納你的代碼。

02

連結清單逆轉

接下來是相關操作的内容了,我先來講講連結清單反轉的具體思路

【資料結構】逆轉連結清單

這是我最初的思路,最後能行,但是過程實在繁瑣,因為不能通用,我就不發在這裡了,這裡主要講我使用遞歸完成這題的思路。

【資料結構】逆轉連結清單

下面貼出我的代碼:

首先是建立連結清單所需要的結構體

【資料結構】逆轉連結清單

建立連結清單的函數

【資料結構】逆轉連結清單

輸對外連結表的函數

【資料結構】逆轉連結清單

下面用兩種方法寫逆轉連結清單的函數

(!!!均未判斷空連結清單)

第一種:遞歸,每次調用傳遞兩個參數

【資料結構】逆轉連結清單

第二種:循環,每次調用一個參數

【資料結構】逆轉連結清單

最後是主函數

【資料結構】逆轉連結清單

03

結束

其實觀察仔細的同學會發現我的循環調用和遞歸調用的思路是一模一樣的,的确,我實在先寫出遞歸逆轉之後才将它改寫成循環逆轉的,隻是為了應對不同題的函數的參數調用個數的要求。

過兩天将用函數實作連結清單的增删改查四個基本操作