久久99热66热这里只有精品,特黄特色的大片在线观看,亚洲日本三级在线观看,国产三级农村妇女在线,亚洲av毛片免费在线观看,哺乳叫自慰在线看,天天干美女av网

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

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

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

單向鏈表的反轉(zhuǎn)是一個經(jīng)常被問到的一個面試題,也是一個非常基礎(chǔ)的問題,

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

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

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

    最容易想到的方法遍歷一遍鏈表,利用一個輔助指針,存儲遍歷過程中當(dāng)前指針指向的下一個元素,然后將當(dāng)前節(jié)點元素的指針反轉(zhuǎn)后,利用已經(jīng)存儲的指針往后面繼續(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. }

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

資料共享平臺

筆試題(單向鏈表的反轉(zhuǎn))》(http://www.dameics.com)。這種方法的基本思想是在反轉(zhuǎn)當(dāng)前節(jié)點之前先調(diào)用遞歸函數(shù)反轉(zhuǎn)后續(xù)節(jié)點。源代碼如下。不過這個方法有一個缺點,就是在反轉(zhuǎn)后的最后一個結(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. }
 

【筆試題單向鏈表的反轉(zhuǎn)】相關(guān)文章:

鏈表面試題-一個鏈表的結(jié)點結(jié)構(gòu)08-09

C++筆試題:關(guān)于鏈表和指針09-16

360筆試題目06-27

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

搜狐產(chǎn)品筆歸分享筆試題目07-05

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

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

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

新浪筆經(jīng)04-27

新聞總署筆經(jīng)10-13