給定乙個單鏈表l,設計函式reverse將l就地逆轉。即不需要申請新的節點,將第乙個節點轉換為最後乙個結點,第二個節點轉換為倒數第二個結點,以此類推。
迴圈處理整個鍊錶。將原鍊錶的第乙個結點取出,作為逆轉後新鍊錶的第乙個結點(即新鍊錶的煉表頭),同時原鍊錶的第二個結點更新為原鍊錶的煉表頭。之後不斷取出原鍊錶的煉表頭,插在新鍊錶的煉表頭之前,即原鍊錶的煉表頭不斷「叛變到」新煉表中充當新鍊錶的煉表頭,從而達到就地逆轉的目的。
return pnewhead;//返回逆轉後鍊表頭
c實現逆轉單向迴圈鍊錶
1.帶頭結點實現 include include typedef struct nodelinknode,linklist void reverseonewaycircularlinkedlist linklist head p next head 沒有必要 p head while p next ...
c語言單向鍊錶逆轉實現方法
自己理解的思路如下所示 從第二個節點開始,先記錄下乙個節點,把第二個節點移到頭節點之前,頭節點變為移動的這個節點 之前記錄的節點變為接下來要移動的節點 用for迴圈重複 最後把原來頭節點變成尾節點 next指向null 返回鍊錶 的頭節點 c語言實現 如下 struct stu reserve st...
單向迴圈鍊錶就地逆置
原來自己想過乙個思路,後來發現完全是不正確的。看來最後還是得在網上查詢演算法,最後才實現了。1 當鍊表為空表或只有乙個結點時,該鍊錶的逆置鍊錶與原表相同。2 當鍊表含2個以上結點時,可將該煉表處理成只含第一結點的帶頭結點鍊錶和乙個無頭結點的包含該鍊錶剩餘結點的鍊錶。然後,將該無頭結點鍊錶中的所有結點...