中文国产日韩欧美视频,午夜精品999,色综合天天综合网国产成人网,色综合视频一区二区观看,国产高清在线精品,伊人色播,色综合久久天天综合观看

筆試題單向鏈表的反轉

時間:2024-06-24 22:16:58 資料大全 我要投稿
  • 相關推薦

筆試題(單向鏈表的反轉)

單向鏈表的反轉是一個經常被問到的一個面試題,也是一個非;A的問題,

筆試題(單向鏈表的反轉)

。比如一個鏈表是這樣的: 1->2->3->4->5 通過反轉后成為5->4->3->2->1。

筆試題(單向鏈表的反轉)

    最容易想到的方法遍歷一遍鏈表,利用一個輔助指針,存儲遍歷過程中當前指針指向的下一個元素,然后將當前節(jié)點元素的指針反轉后,利用已經存儲的指針往后面繼續(xù)遍歷。源代碼如下:

       1. struct linka {
       2. int data;
       3. linka* next;
       4. };
       5. void reverse(linka*& head) {
       6. if(head ==NULL)
       7.                   return;
       8. linka *pre, *cur, *ne;
       9. pre=head;
      10. cur=head->next;
      11. while(cur)
      12. {
      13.    ne = cur->next;
      14.    cur->next = pre;
      15.    pre = cur;
      16.    cur = ne;
      17. }
      18. head->next = NULL;
      19. head = pre;
      20. }

    還有一種利用遞歸的方法,

資料共享平臺

筆試題(單向鏈表的反轉)》(http://www.szmdbiao.com)。這種方法的基本思想是在反轉當前節(jié)點之前先調用遞歸函數(shù)反轉后續(xù)節(jié)點。源代碼如下。不過這個方法有一個缺點,就是在反轉后的最后一個結點會形成一個環(huán),所以必須將函數(shù)的返回的節(jié)點的next域置為NULL。因為要改變head指針,所以我用了引用。算法的源代碼如下:

       1. linka* reverse(linka* p,linka*& head)
       2. {
       3. if(p == NULL || p->next == NULL)
       4. {
       5.    head=p;
       6.    return p;
       7. }
       8. else
       9. {
      10.    linka* tmp = reverse(p->next,head);
      11.    tmp->next = p;
      12.    return p;
      13. }
      14. }
 

【筆試題單向鏈表的反轉】相關文章:

鏈表面試題-一個鏈表的結點結構08-09

C++筆試題:關于鏈表和指針09-16

360筆試題目06-27

筆美國國家儀器試題目09-23

搜狐產品筆歸分享筆試題目07-05

筆試實例:判斷單鏈表中是否存在環(huán)08-03

寫出程序把一個鏈表中的接點順序倒排10-13

最新江河創(chuàng)建調研報告:業(yè)績反轉確認,多元轉型加速09-07

新浪筆經04-27

新聞總署筆經10-13