一、首先我定義了這樣乙個單向鍊錶:
struct listnode
;
並且建立了乙個名為list的鍊錶,共有10個節點,節點資料域為1~10
//建立乙個節點值為1~n的鍊錶
listnode* createlist(int begin,int end)
else
} return phead;
}int main()
二、鍊錶的反**(1)第一種方式:
設定三個指標:plist,qlist,rlist
使用plist和qlist兩個指標配合工作,使得兩個節點間的指向反向,同時用rlist記錄剩下的鍊錶,防止反向時後面的節點丟失。
//4.將單鏈表反轉
listnode* reverselist(listnode* list)
return plist;
}
(2)第二種方式:本質上跟第一種是一樣,只不過我們改變了傳進來的的鍊錶list,所以只需要另外用兩個指標pre和qlist
配合list就可以完成反轉(寫起來更簡便)
//4.將單鏈表反轉
listnode* reverselist(listnode* list)
return pre;
}
單鏈表反轉
單鏈表反轉,可以用迴圈做,當然也可以遞迴 詳見 include includestruct node 3 1 4 6 2 1 1 3 4 6 2 2 4 1 3 6 2 3 6 4 1 3 2 4 2 6 4 1 3 5 迴圈反轉,即依次改動3個指標值,直到鍊錶反轉完成 比如,上面第 1 行到第 2...
反轉單鏈表
include stdafx.h include include using namespace std struct listnode typedef listnode plistnode typedef plistnode list list creatlist return head void...
單鏈表反轉
想起很早以前某次面試,面試官很嚴肅的要求我現場手寫單鏈表反轉的 哥虎軀一震,心想 不就需要要個臨時變數來記錄位址嗎,用得著這樣煞有介事?雖然在那之前我的確沒寫過這個程式,哈哈哈 當時我草草寫了十來行 面試官不等我完成,就直接拿過去開始問問題。不知道是不是因為抗壓能力不足,在面試官的不斷 盤問 下,哥...