【例2-4】已知單鏈表h,寫一演算法將其倒置,即實現如圖2.14所示的操作,其中(a)為倒置前,(b)為倒置後。
資料結構(c#語言版)
2.3 單鏈表 57
h 40 60 80 45 23 11 ∧ (a) 倒置前 h 11 23 45 80 60 40 ∧
(b) 倒置後
圖2.14 單鏈表的倒置
演算法思路:由於單鏈表的儲存空間不是連續的,所以,它的倒置不能像順序表那樣,把第i個結點與第n-i個結點交換(i的取值範圍是1到n/2,n為單鏈表的長度)。其解決辦法是依次取單鏈表中的每個結點插入到新鍊錶中去。並且,為了節省記憶體資源,把原鍊錶的頭結點作為新鍊錶的頭結點。
儲存整數的單鏈表的倒置的演算法實現如下:
public void reverslinklist(linklisth)
}該演算法要對鍊錶中的結點順序掃瞄一遍才完成了倒置,所以時間複雜度為o(n),但比同樣長度的順序表多花一倍的時間,因為順序表只需要掃瞄一半的資料元素。
單鏈表倒置
單鏈表倒置,想要倒置應先整理一下倒置的思路,應先知道鍊錶分為幾種 typedef struct node linklist 2.雙向鍊錶 在雙向鍊錶中它的每個資料結點中都有兩個指標 分別指向直接後繼和直接前驅,資料域儲存資料。結構如下 typedef struct doublenode double...
單鏈表倒置
單鏈表倒置可以說是面試中提問率最高的題目了。網上有很多單鏈表倒置的演算法,但是實現解釋的不是很清晰。總結了一些演算法之後,把我自己認為好理解的簡單方便的演算法整理下來,方便以後自己複習。1.迭代 下面的 及注釋應該很好的解釋了頭插法來實現單鏈表倒置的思路。1 node reverse node no...
單鏈表的倒置
今天晚上作老師布置的作業,一道是單鏈表的倒置,可把我搞慘了.這裡也把我可悲的經歷與大家說一下,提個醒免得以後犯和我一樣的很傻的錯誤 老師在ppt寫好了函式介面,於是我就直接把它拷貝到vs 2005 express 中編寫,寫好了,ctrl 7 進行編譯,error c4335 檢測到 mac 檔案格...