單鏈表的逆序 (采用頭插法實現)


// 單鏈表的建立
// 單鏈表的建立可以用頭插法或者尾插法。頭插法是指建立單鏈表時, 總是將新節點插入到當前鏈表的表頭。
// 頭插法常用在將一個已存在的鏈表逆序。
1
#include <iostream> 2 3 using std::cout; 4 using std::endl; 5 6 struct Item{ 7 char c; 8 Item *next; 9 }; 10 Item *Routine1(Item *x){ 11 Item *prev = NULL, *curr = x; 12 while (curr) { 13 Item *next = curr->next;//將當前結點的后續結點賦值給next 14 curr->next = prev;//修改當前結點的后續結點指向prev 15 prev=curr;//此時prev向前移動賦值為curr 16 curr=next;//curr 賦值為 curr->next 當時保存的后續結點的指針 17 } 18 return prev;//最后prev指向的就是移動到最后一個節點的curr,而curr->next == NULL; 19 } 20 21 void Routine2(Item *x){ 22 Item* curr = x; 23 while (curr) { 24 cout << curr->c << " "; 25 curr=curr->next; 26 } 27 cout << endl; 28 29 } 30 31 int main(void ){ 32 Item *x, 33 d = {'d', NULL}, 34 c = {'c', &d}, 35 b = {'b', &c}, 36 a = {'a', &b}; 37 Routine2(&a); 38 x = Routine1(&a); 39 Routine2(x); 40 return 0; 41 }
// output: a b c d
       d c b a


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM