鍊錶的翻轉(史上最簡)

2021-07-23 19:59:07 字數 877 閱讀 1320

如何將乙個鍊錶進行翻轉?本文將對這個問題進行詳解,主要說明一下這個演算法的邏輯思路。需要說明的是:此演算法雖然只有簡明的幾行**,但是需要有一定的邏輯思維,需要搞明白整體的邏輯。

首先,我們以如下單向鍊錶為例:

要進行翻轉,我們使用 」頭插法「 進行操作。

第一步:使用p和q兩個節點指標指向h->next,然後使頭節點斷裂。

第二步:q指標後移,將p所指向的節點插入h節點後面,即是頭插法(注意插入順序)。

第三步:p指標指向q指標指向的節點處,q指標後移。

第四步:按照第二步的方法繼續把p所指向的節點插入到h後面(頭插法)。迴圈插入後移動指標,最終實現了鍊錶的翻轉。

鍊錶的翻轉的演算法介紹就到這了,有沒有感覺不超過十行**就完成了鍊錶的翻轉工作,是多麼神奇和有趣。需要說明的是:本例程中只是拿整型的資料作為節點的資料域,還可以是其他型別的資料,如字串甚至是結構體。當然實現鍊錶的翻轉的演算法不止這一種,不過可以肯定的是最容易理解的一種演算法,邏輯思維也是很清晰的,如果還有更為簡潔的演算法望給出意見並作後續修改。

史上最簡 Zend產品版本解析

以前的版本就不說了,我說說最新的搭配 php 5.2.5 zend studio 5.5.1 zend optimizer 3.3 zend guard 5.0 zend core 2.5 zend platform 3.0.3 zend debugger 5.2.10 1 自zend platfo...

鍊錶的翻轉

如何快速的實現鍊錶的翻轉,比如鍊錶a資料為 str1,str2,str3,str4,str5,str6 翻轉後則變為 str6,str5,str4,str3,str2,str1 針對上述問題我能想到的一種辦法就是以壓棧的方式來實現,其實現思路相對較為簡單,通過定義乙個鍊錶資料結構的資料棧,遍歷鍊錶,...

鍊錶的翻轉

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。struct listnode 方法一 建立節點指標型別堆疊,遍歷鍊錶,將指標壓棧,順次出棧,實現反轉。這個占用記憶體空間較大。listnode reverselist listnode phead 建立鍊錶list list phead if list...